E / ExoPlayerImplInternal:从本地存储播放.MP4文件时发生源错误

问题描述

我正在从URL下载MP4文件并将其存储在本地,然后当我使用exoplayer播放视频时,它可以正常工作。但是当我使用seekbar来回移动时,它会抛出异常(尽管确实适用于某些视频)

2020-08-19 08:49:20.464 19968-20115/com.pearson.ppe E/ExoPlayerImplInternal: Source error
      com.google.android.exoplayer2.ParserException: Invalid NAL length
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readSample(Mp4Extractor.java:542)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:192)
        at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:982)
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)

它适用于某些视频,而不适用于某些其他视频(已选中可在PC上播放下载的视频,它始终有效)。

这是代码段

        val controls: PlayerControlView = findViewById(R.id.controls)
        controls.player = player
        // Produces DataSource instances through which media data is loaded.
        dataSourceFactory= DefaultDataSourceFactory(this,Util.getUserAgent(this,getString(R.string.app_name)))

        val path = intent.getStringExtra("path")
        // MediaSource representing the media to be played.
        val uri = Uri.parse(path)
        val videoSource: MediaSource = ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(uri)

        player.prepare(videoSource)
        player.playWhenReady = true 

Exo-Player版本:

implementation 'com.google.android.exoplayer:exoplayer:2.11.4'

解决方法

此问题已在exoplayer git存储库中报告,您也可以从以下位置进行检查

https://github.com/google/ExoPlayer/issues/6554

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...