ExoMedia не может играть URL-адрес m3u8 - PullRequest
0 голосов
/ 07 ноября 2018

Я использую Android 5.1+ с этой библиотекой https://github.com/brianwernick/ExoMedia/, Я знаю, что эта библиотека предоставляет VideoView для воспроизведения URL-адресов m3u8. Но когда я пытаюсь, это не работает. Вот ссылка веб-сайта, я получаю URL-адрес m3u8 из его Rss. Я пробовал другой пример URL-адреса m3u8, и он работает нормально. Так что, возможно, проблема в ссылке на этот сайт, но я не знаю почему, какая-то помощь?

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();
}

1 Ответ

0 голосов
/ 08 ноября 2018

Вам необходимо использовать 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);
...