0

我在做什么:

我需要在 iPhone/iPad 上播放 Apple 不支持的音频和视频文件,例如包含多个音频通道的 mkv/mka 文件。

我正在使用 libffmpeg 在媒体文件中查找音频和视频流。视频正在解码,avcodec_decode_video2每个avcodec_decode_audio3 函数的返回值如下

  • avcodec_decode_video2- 返回AVFrame结构体,该结构体封装了来自包的视频视频帧的信息,具体来说是具有data指向图片/通道平面的指针的字段。
  • avcodec_decode_audio3- 返回samplesint16_t * 类型,我猜这是原始音频数据

所以基本上我已经完成了所有这些并成功解码了媒体内容。

我必须做的: 我必须使用 Apple 服务相应地播放音频和视频。我需要执行的播放应该支持在播放视频时混合音频通道,即假设 mkv 文件包含两个音频通道和一个视频通道。所以我想知道哪种服务适合我?我的研究表明,AudioQueue 服务可能是有用的音频播放,并且可能是视频的 AVFoundation。

请帮助为我的情况找到合适的技术,即视频播放 + 音频播放以及可能的音频通道混合。

4

1 回答 1

2

你走在正确的道路上。如果您只播放音频(根本不录制),那么我会使用 AudioQueues。它会为你做混合。如果您正在录制,那么您应该使用 AudioUnits。看看 Apple 的 MixerHost 示例项目。对于视频,我建议使用 OpenGL。假设图像缓冲区在 YUV420 中,那么您可以使用简单的两遍着色器设置来渲染它。我相信有一个 Apple 示例项目展示了如何做到这一点。在任何情况下,您都可以使用 OpenGL 渲染任何像素格式,并使用着色器将像素格式转换为 RGBA。希望这有帮助。

于 2012-06-22T20:50:24.307 回答