首页 > 解决方案 > ExoPlayer - 在 MergingMediaSource 上抛出 UnrecognizedInputFormatException

问题描述

我正在使用 ExoPlayer 播放来自外部存储的视频。在我的用例中,一些视频有单独的音频文件。所以我需要将它们合并播放。当我使用MergingMediaSource时,它​​会抛出UnrecognizedInputFormatException

这是我的代码

MediaSource videoSource = new ExtractorMediaSource(videoUri, dataSourceFactory, extractorsFactory, null, null);
MediaSource audioSource = new ExtractorMediaSource(audioUri, dataSourceFactory, extractorsFactory, null, null);
MergingMediaSource mergingMediaSource = new MergingMediaSource(videoSource, audioSource);

当我使用这个 mediaSource 时,它​​会引发以下异常

2019-05-24 18:36:41.084 4283-4441/me.entri.entrime 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:973)
    at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:891)
    at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
    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)

但是当我尝试单独播放它们时,它工作正常。

标签: javaandroidexoplayerexoplayer2.x

解决方案


推荐阅读