Android-将录制的H.264主配置文件视频转换为H.264基线配置文件的最佳解决方案

Android-将录制的H.264主配置文件视频转换为H.264基线配置文件的最佳解决方案,android,ffmpeg,codec,exoplayer,vitamio,Android,Ffmpeg,Codec,Exoplayer,Vitamio,我发现MediaPlayer无法播放由H.264主配置文件编码的视频,我尝试了ExoPlayer和Vitamio,但都没有解决我的问题。最后,我发现最好的解决方案是将视频转换为H.264基线配置文件FFmpeg几乎是9MB,对我的项目来说太重了,所以我不喜欢用它来通过命令将视频转换成那个配置文件。我的朋友建议在服务器端转换视频,但我们都知道它的性能很差。我该怎么办?这个问题的最佳解决方案是什么?Android技术上只支持H.264基线,但许多较新的(通常是高端设备)也将播放H.264主配置文件。

我发现
MediaPlayer
无法播放由
H.264主配置文件编码的视频,我尝试了
ExoPlayer
Vitamio
,但都没有解决我的问题。最后,我发现最好的解决方案是将视频转换为
H.264基线配置文件
FFmpeg
几乎是9MB,对我的项目来说太重了,所以我不喜欢用它来通过命令将视频转换成那个配置文件。我的朋友建议在服务器端转换视频,但我们都知道它的性能很差。我该怎么办?这个问题的最佳解决方案是什么?

Android技术上只支持H.264基线,但许多较新的(通常是高端设备)也将播放H.264主配置文件。例如,Nexus4、5、6、7和10都有。所以,你有几个选择。。。您要么只使用H.264 Main,而不关心不支持它的旧设备,要么在服务器端进行转换。在设备上进行转换是个坏主意。如果它不支持H.264基线,那么它可能是出于性能原因,在设备上进行转换,然后解码会压垮CPU


值得注意的是,ExoPlayer将使用与MediaPlayer相同的设备编解码器,因为它只是MediaCodec的包装器。Vitamio是ffmpeg的包装器,可以提供带有自定义ffmpeg构建的H.264主编解码器,但同样,如果一开始没有,性能可能是个问题。

我们已经在服务器端转换视频,但我们对其性能表示怀疑。我们认为Instagram等应用程序以另一种方式处理这个问题。我们在这个问题上挣扎了将近两个月!如果你对这个问题及其解决方案了解更多,或者你亲身经历过,请与包括我在内的社区分享。支持大多数Android设备需要提供H.264基线服务。从主帧或高帧转换需要解码和编码来删除B帧以达到基线。在设备上这样做是不实际的,因为首先可能不支持解码。对于拥有这些资源的公司,我怀疑他们会在服务器端缓存多种格式和比特率,然后根据设备支持的内容和网络质量,通过碎片化MP4(或类似的东西)动态地为它们提供服务。