带直播的 Exoplayer 演员扩展
Posted
技术标签:
【中文标题】带直播的 Exoplayer 演员扩展【英文标题】:Exoplayer cast extension with live streams 【发布时间】:2018-12-10 01:54:36 【问题描述】:我正在尝试对我的 androapp 实施强制转换支持,当我使用普通的非实时链接(例如 MP4 甚至 HLS 非实时流)时,它可以完美运行,但是,当我使用实时流时,流就不会在chromecast。
这就是我创建 MediaInfo 的方式:
MediaMetadata movieMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
movieMetadata.putString(MediaMetadata.KEY_TITLE, "Test");
MediaInfo mediaInfo = new MediaInfo.Builder("HLS link")
.setStreamType(MediaInfo.STREAM_TYPE_LIVE).setContentType(MimeTypes.APPLICATION_M3U8)
.setMetadata(movieMetadata).build();
这是我加载项目的方式:
castPlayer.loadItem(new MediaQueueItem.Builder(setCastMedia()).build(), 0);
这是我得到的 logcat:
W/MediaControlChannel: received unexpected error: Invalid Request. W/MediaQueue: Error fetching queue item ids, statusCode=2100, statusMessage=null
任何想法我做错了什么? 与 TS 类型的流相同...
【问题讨论】:
直播网址是什么?它可能有 CORS 目前无法发布链接,但如果它有 CORS 应该有什么不同? 如果在此标头中有限制访问控制允许来源:您无法访问流。你能播放任何一个流吗?或者没有 您也可以尝试添加 -->> .setContentType("application/x-mpegURL") MimeTypes 类是你的自定义类吗? 【参考方案1】:通过以下代码,您可以使用 ExoPlayer 进行直播。
MediaMetadata movieMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_TV_SHOW);
movieMetadata.putString(MediaMetadata.KEY_TITLE, "Title");
MediaInfo mediaInfo = new MediaInfo.Builder("your_link.m3u8")
.setStreamType(MediaInfo.STREAM_TYPE_LIVE)
.setContentType(MimeTypes.APPLICATION_M3U8)
.setMetadata(movieMetadata)
.build();
MediaQueueItem mediaQueueItem = new MediaQueueItem.Builder(mediaInfo).build();
castPlayer.loadItem(mediaQueueItem, mediaQueueItem.getMedia().getStreamDuration());
castPlayer.setPlayWhenReady(true);
【讨论】:
以上是关于带直播的 Exoplayer 演员扩展的主要内容,如果未能解决你的问题,请参考以下文章
Android ExoPlayer 无法播放 HLS(HTTP 直播)
android tv 中的 Exoplayer 不会在直播中重现 (.m3u8) 文件
如何使用 ExoPlayer 的 IMA 扩展在特定点展示广告?