ExoMedia 无法播放 m3u8 网址



我使用的是带有此库的Android 5.1+https://github.com/brianwernick/ExoMedia/,我知道这个库提供的VideoView可以播放m3u8的url。但当我尝试时,它不起作用。这是我从Rss获得m3u8网址的网站链接。我尝试了一些其他的示例m3u8url,它运行良好。所以也许问题是这个网站的链接,但我不知道为什么,有什么帮助吗?

private void setupVideoView() {
videoView = (VideoView)findViewById(R.id.video_view);
videoView.setOnPreparedListener(this);
videoView.setVideoURI(Uri.parse("https://hls.mediacdn.vn/vtv/2018/11/7/0711thoi-tiet-12h30-1541575206215339010832-8cab6.mp4/master.m3u8"));
}
@Override
public void onPrepared() {
videoView.start();
}

您需要使用HlsMediaSource

HlsMediaSource hlsMediaSource = new HlsMediaSource(Uri.parse(hlsVideoUri), dataSourceFactory, mainHandler, new AdaptiveMediaSourceEventListener() {
@Override
public void onLoadStarted(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs) {
}
@Override
public void onLoadCompleted(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs, long bytesLoaded) {
}
@Override
public void onLoadCanceled(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs, long bytesLoaded) {
}
@Override
public void onLoadError(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs, long bytesLoaded, IOException error, boolean wasCanceled) {
}
@Override
public void onUpstreamDiscarded(int trackType, long mediaStartTimeMs, long mediaEndTimeMs) {
}
@Override
public void onDownstreamFormatChanged(int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaTimeMs) {
}
});
player.prepare(hlsMediaSource);

最新更新