带直播的 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 获取 403 响应代码错误

如何使用 ExoPlayer 的 IMA 扩展在特定点展示广告?

如何从 ExoPlayer Cast 扩展创建 CastPlayer?

ExoPlayer添加Ffmpeg扩展实现软解功能