我正在尝试构建一个播放视频文件并使用 MTAudioProcessingTap 做一些有趣的事情的 iOS 应用程序。我需要它能够播放各种格式,包括 Apple 不支持的一些格式。我正在考虑从 VLC 分支出来,但我不知道它是否在任何时候使用核心音频/视频,或者它是否完全运行其他东西。
如果不是,是否有一个库可以用来处理正在使用的 203572964 编解码器?
谢谢。
我正在尝试构建一个播放视频文件并使用 MTAudioProcessingTap 做一些有趣的事情的 iOS 应用程序。我需要它能够播放各种格式,包括 Apple 不支持的一些格式。我正在考虑从 VLC 分支出来,但我不知道它是否在任何时候使用核心音频/视频,或者它是否完全运行其他东西。
如果不是,是否有一个库可以用来处理正在使用的 203572964 编解码器?
谢谢。
初步说明:我是 VLC for iOS 的开发人员,所以以下可能有偏见。
适用于 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。
如果您无法弄清楚它是如何在较低级别播放视频的,那可能表明您应该继续使用它而不是试图超越它。视频处理非常困难,并且由于专利问题,通常不受支持的格式不受支持。我真的没有见过比公开可用的 VLC 更好的东西。
VLC 2.1.x 似乎使用 AudioToolbox 和 AVFoundation。
不过,另一个问题是,当我使用 VLC 工作时,我对它如何将我的 iPod Touch 变成一个微型熨斗感到震惊,因为它非常努力地处理视频。手动处理视频是非常占用处理器资源的,而且确实是一种消耗。所以你的方式或 VLC 仍然可能有一些额外的问题。