具有实时流的Exoplayer Cast扩展

时间:2018-12-10 01:54:36

标签: android exoplayer

我正在尝试对我的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);

这是我得到的日志猫:

W/MediaControlChannel: received unexpected error: Invalid Request. W/MediaQueue: Error fetching queue item ids, statusCode=2100, statusMessage=null

有什么主意我做错了吗? 对于TS类型的流也是如此...

1 个答案:

答案 0 :(得分:0)

使用以下代码,您可以使用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);