所有可用的提取器(Mp4Extractor,Mp3Extractor ....)都无法读取该流

时间:2019-12-23 23:48:28

标签: java android video-streaming firebase-storage exoplayer

我正在使用从Firebase存储中获取的视频(.mp4)和缩略图(image)的网址,使用 DefaultHttpDataSourceFactory Exo播放器中播放视频 但是我在播放器初始化

时收到此错误

VideoUri (“ https://firebasestorage.googleapis.com/v0/b/theatron-8f223.appspot.com/o/PostData%2F03a0195d-b7ea-479a-95e9-51537580fc1f?alt=media&token=abbb2988-d9c3-4afc-955c-c2e78ba989a2”)

E/ExoPlayerImplInternal: Source error.
com.google.android.exoplayer2.source.UnrecognizedInputFormatException: None of the available extractors (MatroskaExtractor, FragmentedMp4Extractor, Mp4Extractor, Mp3Extractor, AdtsExtractor, Ac3Extractor, TsExtractor, FlvExtractor, OggExtractor, PsExtractor, WavExtractor, AmrExtractor) could read the stream.
    at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractorHolder.selectExtractor(ExtractorMediaPeriod.java:927)
    at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:849)
    at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:320)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at java.lang.Thread.run(Thread.java:761)

在onCreate中,我正在调用方法 intializePlayer();

    void initializePlayer() {
    player = ExoPlayerFactory.newSimpleInstance(
            new DefaultRenderersFactory(this),
            new DefaultTrackSelector(), new DefaultLoadControl());

    playerView.setPlayer(player);
    player.setPlayWhenReady(playWhenReady);
    player.seekTo(currentWindow, playbackPosition);

    Uri uri = Uri.parse(post.getVideoUrl());
    MediaSource mediaSource = buildMediaSource(uri);
    player.prepare(mediaSource, false, false);
}

/**
 * method to build media source
 *
 * @param uri of the media
 * @return media source
 */
private MediaSource buildMediaSource(Uri uri) {
    return new ExtractorMediaSource.Factory(
            new DefaultHttpDataSourceFactory("exoplayer-codelab")).
            createMediaSource(uri);
}

/**
 * method to release player
 */
void releasePlayer() {
    if (player != null) {
        playbackPosition = player.getCurrentPosition();

        currentWindow = player.getCurrentWindowIndex();
        playWhenReady = player.getPlayWhenReady();
        player.release();
    }
}

如果可以尝试告诉我解决方案,请帮助我解决此问题,谢谢

0 个答案:

没有答案