我正在尝试从我的Android发送器播放M3U8文件,像这样:
metaData = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
metaData.putString(MediaMetadata.KEY_TITLE, "Demo Video");
MediaInfo mediaInfo = new MediaInfo.Builder(
"http://www.corsproxy.com/playertest.longtailvideo.com/adaptive/bbbfull/bbbfull.m3u8")
.setContentType("application/vnd.apple.mpegurl")
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setMetadata(metaData)
.build();
player.load(client, mediaInfo, true)
.setResultCallback(new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() {
@Override
public void onResult(RemoteMediaPlayer.MediaChannelResult mediaChannelResult) {
Status status = mediaChannelResult.getStatus();
if (status.isSuccess()) {
}
}
});
然而,我得到错误
[cast.receiver.MediaManager] Load metadata error
[cast.player.api.Player] error
[cast.receiver.MediaManager] Load metadata error
[cast.receiver.MediaManager] Not sending LOAD error as there is no on going LOAD request
这是一个风格的媒体接收器,我的理解是,它正在使用媒体播放器库,所以它应该能够处理M3U8对吗?所以我认为这可能是我的Sender部分的错误?我是否正确加载了m3u8 url ?
您可以尝试在已解析的m3u8条目上进行exp/imp循环,将您的m3su属性替换为"movieMetadata"…
private static MediaInfo buildMediaInfo(String title,
String subTitle, String studio, String url, String imgUrl, String bigImageUrl) {
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(imgUrl)));
movieMetadata.addImage(new WebImage(Uri.parse(bigImageUrl)));
return new MediaInfo.Builder(url)
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType(getMediaType())
.setMetadata(movieMetadata)
.build();
}
然后当你有一个MediaInfo…你需要某些东西的播放事件,你需要在每个播放项目的末尾放置一个循环器,以便在下一个MediaInfo条目上发出播放事件的信号。我使用CCL库构建了循环,它播放MediaInfo项目列表。