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