在Chromecast's documentation中,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
也没有任何效果。还有其他想法吗?
答案 0 :(得分:4)
你使用的接收器是什么?您可以使用默认接收器或Styled接收器;他们都支持HLS。自适应流的处理由Media Player Library(MPL)处理,如果您想编写自己的自定义接收器,则需要使用该库;我们有sample就可以做到这一点。
答案 1 :(得分:0)
我发现将流的contentType
设置为"video/m3u"
或"video/m3u8"
(取决于您的格式),可以使用默认接收器为我的HLS流工作。