我发现 MediaPlayer
无法播放由 H.264 Main Profile
编码的视频,我尝试了 ExoPlayer
和 Vitamio
但他们都没有解决我的问题。最后我发现最好的解决方案是将视频转换为 H.264 Baseline Profile
。 FFmpeg
将近 9MB,对我的项目来说太重了,所以我不喜欢用它通过命令将视频转换为该配置文件。我的 friend 建议在服务器端转换视频,但我们都知道它的性能很差。我应该怎么办?这个问题的最佳解决方案是什么?
最佳答案
Android 在技术上只支持 H.264 Baseline,但许多较新的设备(通常是高端设备)也可以播放 H.264 Main Profile。例如,Nexus 4、5、6、7 和 10 都可以。因此,您有几个选择...您要么只使用 H.264 Main 而不关心不支持它的旧设备,要么在服务器端进行转换。在设备上进行转换不是一个好主意。如果它不支持 H.264 Baseline,则可能是出于性能原因,并且在设备上进行转换然后解码会压垮 CPU。
值得注意的是,ExoPlayer 将使用与 MediaPlayer 相同的设备编解码器,因为它只是 MediaCodec 的包装器。 Vitamio 是 ffmpeg 的包装器,它可能会提供一个带有自定义 ffmpeg 构建的 H.264 主编解码器,但同样,如果它一开始就不存在,那么性能可能是一个问题。
关于Android - 将录制的 H.264 Main Profile 视频转换为 H.264 Baseline Profile 的最佳解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35505521/