2016-02-19 77 views
2

我发现MediaPlayer不能播放由H.264 Main Profile编码的视频,我试图ExoPlayerVitamio但它们都没有解决我的问题。最后我发现最好的解决方案是将视频转换为H.264 Baseline ProfileFFmpeg差不多是9MB,对我的项目来说太重了,所以我不喜欢用它通过命令将视频转换成该配置文件。我的朋友建议在服务器端转换视频,但我们都知道它的性能不佳。我该怎么办?这个问题的最佳解决方案是什么?Android的 - 最好的解决方案转换记录标准H.264 Main Profile视频,H.264 Baseline Profile的

回答

6

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 Main编解码器,但是如果它不在首位,性能可能是一个问题。

+0

我们已经在服务器端转换视频,但我们怀疑它的性能。我们认为像Instagram这样的应用以另一种方式处理这个问题。我们正在努力解决这个问题近两个月!如果你对这个问题及其解决方案有更多的了解,或者你亲身经历过这个问题,请与我们社区分享,包括我。 – Alireza

+0

支持大多数Android设备需要提供H.264 Baseline。从主或高转换需要解码和编码以去除B帧以达到基线。在设备上这样做是不实际的,因为解码可能首先不被支持。对于拥有这些资源的公司,我怀疑他们会缓存多种格式和比特率的服务器端,然后根据设备支持的功能和网络质量,通过分段的MP4(或类似的)动态地提供它们。 – Kaleb