我正在尝试构建一个播放视频文件的iOS应用,并使用MTAudioProcessingTap做一些有趣的事情。我需要能够播放各种格式,包括Apple不支持的格式。我正在考虑从VLC扩展,但我无法弄清楚它是否在任何时候使用Core Audio / Video,或者它是否正在完全运行其他内容。
如果不是,是否有一个库可以用来处理那里使用的203572964编解码器?
感谢。
答案 0 :(得分:1)
初步说明:我是iOS版VLC的开发者,因此以下内容可能有偏见。
适用于iOS的MobileVLCKit包含2个不同的音频输出模块。其中一个是基于AudioQueue的高级模块,它相当复杂但有点慢。另一个基于AudioUnit,CoreAudio的低级框架,相当复杂,但速度更快。根据您当前的经验,任何一个模块都是一个好的开始方式。
关于支持所有编解码器的一个库:基本上有两个同一个库的分支:libav和FFmpeg。 VLC支持风格和抽象复杂性以及不断变化的API(如果您打算在这些库的多个版本中维护您的应用程序,那将是一个真正的痛苦)。此外,我们还包括一个表现相当不错的OpenGL ES 2视频输出模块,该模块使用着色器进行色度对话。您需要做的就是嵌入UIView。 MobileVLCKit处理剩下的事情。
说到MobileVLCKit:这是libvlc上的一个瘦的ObjC层,通过抽象最常用的功能,简化了第三方应用程序中这个库的使用。
正如HalR暗示的那样,libvlc尚未在iOS上使用硬件加速解码。我们正在与libav开发人员一起使用通用方法,但我们还没有完全实现。因此,我们必须在CPU上进行所有解码,这会导致加热但允许我们使用默认的加速API来播放几乎任何东西而不是H264 / MP4。
答案 1 :(得分:0)
如果你无法弄清楚它在低级别播放视频的方式,那或许表明你应该继续使用它,而不是试图超越它。视频处理非常困难,并且由于专利问题,通常不支持的格式不受支持。我真的没有看到比公开发售的VLC更好的东西。
VLC 2.1.x似乎使用AudioToolbox和AVFoundation。
另一个问题是,当我在使用VLC工作时,我惊讶地发现它是如何将我的iPod Touch变成微型铁的,因为它正在努力处理视频。手动处理视频是处理器密集型的,实际上是一种消耗。所以你的方式或VLC仍然可能有一些额外的问题。