Android 在exo player上播放视频,从我的youtube直播

Android 在exo player上播放视频,从我的youtube直播,android,exoplayer2.x,youtube-livestreaming-api,Android,Exoplayer2.x,Youtube Livestreaming Api,我想将我的Youtube直播视频播放到我的android移动应用程序,即当我在Youtube上直播时,我想在exo player中播放该视频。 这是我的exoplayer代码,用于播放实时视频url。 我使用了youtube提取器实现'com.github.HaarigerHarald:android youtubeExtractor:master SNAPSHOT' new YouTubeExtractor(this) { @Override public

我想将我的Youtube直播视频播放到我的android移动应用程序,即当我在Youtube上直播时,我想在exo player中播放该视频。 这是我的exoplayer代码,用于播放实时视频url。 我使用了youtube提取器
实现'com.github.HaarigerHarald:android youtubeExtractor:master SNAPSHOT'

  new YouTubeExtractor(this) {
        @Override
        public void onExtractionComplete(SparseArray<YtFile> ytFiles, VideoMeta vMeta) {
            if (ytFiles != null) {
                String url = ytFiles.get(22).getUrl();
                playVideo(url);
            }
        }
    }.extract("https://www.youtube.com/watch?v=LCfuylCR5ZQ", true, true);


 private void playVideo() {
    //Creating default track selector
    TrackSelection.Factory adaptiveTrackSelection = new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter());
    player = ExoPlayerFactory.newSimpleInstance(
            new DefaultRenderersFactory(ExoPlayerJavaActivity.this),
            new DefaultTrackSelector(adaptiveTrackSelection),
            new DefaultLoadControl());
    playerView.setPlayer(player);
    DefaultBandwidthMeter defaultBandwidthMeter = new DefaultBandwidthMeter();
    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(ExoPlayerJavaActivity.this,
            Util.getUserAgent(ExoPlayerJavaActivity.this, "Employee Management"), defaultBandwidthMeter);

    Uri uri = Uri.parse("https://www.youtube.com/watch?v=LCfuylCR5ZQ");
    Handler mainHandler = new Handler();
    MediaSource mediaSource = new HlsMediaSource(uri,
            dataSourceFactory, mainHandler, null);
    player.prepare(mediaSource);
    player.setPlayWhenReady(playWhenReady);
    player.addListener(new Player.EventListener() {
        @Override
        public void onTimelineChanged(Timeline timeline, Object manifest, int reason) {
        }

        @Override
        public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
        }

        @Override
        public void onLoadingChanged(boolean isLoading) {
        }

        @Override
        public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
            switch (playbackState) {
                case ExoPlayer.STATE_READY:
                    loading.setVisibility(View.GONE);
                    break;
                case ExoPlayer.STATE_BUFFERING:
                    loading.setVisibility(View.VISIBLE);
                    break;
            }
        }

        @Override
        public void onRepeatModeChanged(int repeatMode) {
        }

        @Override
        public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {
        }

        @Override
        public void onPlayerError(ExoPlaybackException error) {
        }

        @Override
        public void onPositionDiscontinuity(int reason) {
        }

        @Override
        public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {
        }

        @Override
        public void onSeekProcessed() {
        }
    });
    player.seekTo(currentWindow, playbackPosition);
    player.prepare(mediaSource, true, false);
}

所有这些联系都意味着两件事;第一,你的媒体是无效的;第二,不支持实时流。为了排除媒体问题,VLC可以播放该链接吗?我使用了
YouTube提取器
,它正在播放普通视频,但不播放实况视频。请检查更新的代码@SharkIt似乎你不明白你仍然会遇到的错误,也不想尝试与其他播放器播放链接以排除这不是媒体问题,所以。。。既然您正在寻找调试帮助,我可以建议您发布一个吗?,,所有这些链接意味着两件事;第一,你的媒体是无效的;第二,不支持实时流。为了排除媒体问题,VLC可以播放该链接吗?我使用了
YouTube提取器
,它正在播放普通视频,但不播放实况视频。请检查更新的代码@SharkIt似乎你不明白你仍然会遇到的错误,也不想尝试与其他播放器播放链接以排除这不是媒体问题,所以。。。既然您正在寻找调试帮助,我可以建议您发布一个吗?
E/ExoPlayerImplInternal: Source error.
com.google.android.exoplayer2.source.UnrecognizedInputFormatException: Input does not start with the #EXTM3U header.
    at com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistParser.parse(HlsPlaylistParser.java:149)
    at com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistParser.parse(HlsPlaylistParser.java:48)
    at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:138)
    at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:320)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)