在Chromecast的文档中指出Chromecast确实支持HLS流。但我不能让它工作。
我创建了一个简单的应用程序,其中包含一个启动播放的按钮。对于 MP4 文件,它效果很好,但不适用于 HLS 流。这就是我开始直播的方式:
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "http://planeta-online.tv:1935/vod/mp4:tvt.russia.time_laps_in_st_piter.flv/manifest.m3u8";
MediaMetadata movieMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
movieMetadata.putString(MediaMetadata.KEY_SUBTITLE, "Subtitle");
movieMetadata.putString(MediaMetadata.KEY_TITLE, "Title");
movieMetadata.putString(MediaMetadata.KEY_STUDIO, "Studio");
movieMetadata.addImage(new WebImage(Uri.parse("http://cdn.planeta-online.tv/kp/app/icons/i5.png")));
movieMetadata.addImage(new WebImage(Uri.parse("http://cdn.planeta-online.tv/kp/app/icons/i5.png")));
MediaInfo mSelectedMedia = new MediaInfo.Builder(url)
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType("application/vnd.apple.mpegurl")
.setMetadata(movieMetadata)
.build();
mVideoCastManager.startCastControllerActivity(MainActivity.this, mSelectedMedia, 0, true);
}
});
我在 Wowza 上为这个流启用了 CORS,但它没有帮助。将 StreamType 从 MediaInfo.STREAM_TYPE_BUFFERED
更改为 MediaInfo.STREAM_TYPE_LIVE
也不会产生任何效果。还有其他想法吗?
你用的是什么接收器?您可以使用默认接收器或样式接收器;它们都支持 HLS。自适应流的处理由媒体播放器库 (MPL) 处理,如果要编写自己的自定义接收器,则需要使用该库;我们有一个示例可以做到这一点。
我发现将流的contentType
设置为"video/m3u"
或"video/m3u8"
(取决于您的格式)适用于使用默认接收器的 HLS 流。