3

我有一个 64 位 Mac OS X Cocoa 应用程序,它使用 AV Foundation 来满足其大部分媒体 I/O 需求,但是我希望它也能够读取其他格式,尤其是 AVI 容器内的 Motion JPEG,但是可能还有其他(第 3 方 QuickTime 插件支持的其他编解码器和格式)。这当然将我引向 QTKit,因为 QuickTime 本身不适用于 64 位应用程序。

这是一个视频处理和编辑应用程序,所以我需要抓取解码后的样本数据。

我已经解决了 QTKit 中帧抓取的最大性能问题。对于那些感兴趣的人,您希望将 QTMovie 步进到所需的帧采样时间,然后在启用 QTMovieFrameImageSessionMode 属性的情况下使用 QTMovie 的 -frameImageAtTime 抓取它,并设置 QTMovieFrameImageType 为您提供 CVPixelBufferRef 而不是 NSImage。

但是,在获取解码的 PCM 音频数据时,我不知所措。在 QuickTime 的 7 天里,这很容易,但我当然不能从 64 位应用程序调用 QuickTime API。我在 QTMovie 类中看不到任何相关内容,或者我也看不到 QTTrack 级别。那么... 64 位应用程序如何从 QTKit 或 QuickTime 获取 PCM 音频?

谢谢

4

1 回答 1

2

我只是在为类似的问题而苦苦挣扎。提取音频数据所需的 QT API 部分对 64 位应用程序根本不可用。获取任何音频数据的所有相关帖子均参考MovieAudioExtractionFillBuffer等。

我的解决方案将是应用程序和项目拆分,因此我将有一个 32 位音频提取器进程和一个 64 位主应用程序进程,使用一些 IPC 内存传输来获取音频数据。

于 2013-05-15T08:45:57.253 回答