在iOS(和Airplay)上为硬件加速的不受支持的容器设计库

时间:2014-12-27 05:07:30

标签: ios gstreamer h.264 airplay

我试图组建一个开源库,允许iOS设备播放包含不受支持的容器的文件,只要支持磁道格式/编解码器。例如:带有H264视频轨道和AAC音轨的Matroska视频(MKV)文件。我正在创建一个肯定可以使用该功能的应用程序,我敢打赌,还有更多可以从中受益的应用程序。您可以给予任何帮助(通过评论或甚至更好 - 与我合作)非常感谢。这是我到目前为止所处的位置:

我做了一些研究,试图找出像AVPlayerHD或Infuse这样的玩家如何玩非标准容器并仍然具有硬件加速功能。看起来他们会对整个视频文件的小块进行转码,然后按顺序播放。

这是一个很好的解决方案。但是如果你想将这个视频投放到Apple TV上,那么事情就不会按计划进行,因为视频实际上是一堆较小的块作为播放列表播放。 This site有更多的信息,但其核心流媒体到Apple TV基本上是正在播放的MP4 / MPV文件的渐进式下载。

我认为某种流媒体代理是可行的方式。对于游戏方面,我一直在调查AVSampleBufferDisplayLayer(更多信息here)作为播放视频轨道的方式。我还没有收听音频。当您考虑AirPlay方面的事情时,事情变得有趣:通过拥有容器代理",我们可以使任何文件看起来像是具有正确的容器而没有转码的文件大小影响。

似乎GStreamer可能是代理的一个很好的起点。我需要阅读它;我以前从没用过它。对于可用于App Store应用程序的库,这种方法听起来不错吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

终于有了一些额外的时间去看看GStreamer。特别是this article about how it is already updated to use the hardware decoding provided by iOS 8。所以不需要发展这个; GStreamer似乎就是答案。

谢谢!

答案 1 :(得分:0)

iOS 8中不再需要'chucked'解决方案。您应该只设置一个视频解码会话并传入NALU。

https://developer.apple.com/videos/wwdc/2014/#513