UnrecognizedInputFormatException:没有可用的提取器可以读取流

时间:2019-09-18 16:14:42

标签: android exoplayer exoplayer2.x

我有一个默认的.mp4文件,我想使用ExoPlayer(在Android上)查看。我用这个小视频:

http://techslides.com/demos/sample-videos/small.mp4

在App中,我得到一个base64字符串,即视频。当我在网站上粘贴以上视频时:

https://base64.guru/converter/encode/video

它显示与应用程序中接收到的相同的Base64值,但是会引发以下错误。

player.playFromBytes(currentVideoBase64?.toByteArray()!!)

override fun playFromBytes(byteArray: ByteArray) {
    val mediaSource = createMediaSourceFromByteArray(byteArray)
    exoPlayer.prepare(mediaSource)
    exoPlayer.playWhenReady = true
}

private fun createMediaSourceFromByteArray(data: ByteArray): MediaSource {
    val byteArrayDataSource = ByteArrayDataSource(data)
    val factory = DataSource.Factory { byteArrayDataSource }
    val mediaSource = ProgressiveMediaSource.Factory(factory, DefaultExtractorsFactory())
            .createMediaSource(Uri.EMPTY)

    return Objects.requireNonNull(mediaSource, "MediaSource cannot be null")
}

错误消息:

2019-09-18 18:09:59.970 18009-18743/ 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, Ac4Extractor) could read the stream.
        at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractorHolder.selectExtractor(ProgressiveMediaPeriod.java:1059)
        at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:947)
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
        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)

更新:使用Base64.getDecoder().decode(currentVideoBase64)可以使用,但仅适用于Android O及更高版本。

0 个答案:

没有答案