如何修复播放H.264格式视频的Exoplayer问题



我有一台运行android 4.2.2的设备,并创建了一个应用程序,该应用程序使用最新版本的ExoPlayer作为视频播放器组件。我的播放器在使用ProgressiveMediaSource播放视频方面做得很好。但昨天我发现它在播放H.264格式的视频时遇到问题。视频正在播放,但它只是显示了一个灰色屏幕

我深入挖掘,意识到此视频与早期视频之间的唯一区别是它们具有不同的配置文件规范(工作视频为Main,而该视频为High(。

首先,我猜测可能是编解码器不支持,但我用MediaPlayer创建了一个应用程序,它播放起来没有问题。

这似乎是这个问题的重复,但对我没有帮助。

我阅读了ExoPlayer文档的整个疑难解答页面,尤其是那些与我的文件类型(MP4(相关的文档,但它似乎与我的问题无关。

我尝试的最后一件事是将分析添加到我的ExoPlayer中,但没有看到任何类似的日志:

[ ] Track:x, id=x, mimeType=mime/type, ... , supported=NO_UNSUPPORTED_TYPE

我知道我对这个问题的了解并不广泛,我需要改进它来解决这个问题,任何直接或间接的建议都将不胜感激。

PS。你可以在这里看到我的视频文件。我添加了三个工作视频和一个特别损坏的视频。所有视频文件都具有标准格式、比特率、配置文件和编码。

我也在我的外层kotlin的例子中尝试了你的视频。它没有起作用,也出现了同样的问题。

我去查看了github回购,发现了这个外层问题。这似乎是一个库不打算解决的错误。你要么必须对你的视频进行一些处理,要么使用另一个视频组件,如果这对你的应用程序至关重要的话。

编辑:我已经取了官方外层提供的样本,并添加到media.exolist.json中,这个:

"name": "Widevine DASH: MP4,H264",
"samples": [
{
"name": "TEST: CORRUPTED",
"uri": "https://YOUR-IP/corrupted.mp4"
},
...

在日志中我得到了这个:

tracks [eventTime=0.21, mediaPos=0.00, window=0, period=0, 
Renderer:0 [
Group:0, adaptive_supported=N/A [
[X] Track:0, id=1, mimeType=video/avc, res=1280x800, fps=29.970032, supported=YES
]
]
]

然而,视频断断续续,无法观看。

最新更新