java - 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)
但是当我尝试单独播放它们时,它工作正常。
解决方案
推荐阅读
- c++ - 在 C 中是否有针对此问题的替代解决方案?
- android - 如果在 Kotlin 中包含超过 10 个单词,如何更改 textview 高度(代码)
- windows - 将文件夹和内容复制到 Windows 10 上的不同文件夹
- mongodb - 按周对 mongodb 进行排序,然后对数据求和并取平均值
- html - 视角不好的角垫卡
- angular - Angular + Nginx + Kubernetes - 部署子目录问题
- spring - thymeleaf spring boot url 映射问题导致 url 中的单词重复
- flutter - Flutter: Provider 被处理后被使用
- javascript - 在 html/css 中切换按钮链接
- c# - 当 MaintainScrollPositionOnPostback 设置为 true 时,回发会导致页面“闪烁”