正确选择播放音频和视频内容

时间:2012-06-22 14:19:33

标签: iphone ffmpeg avfoundation core-audio audioqueueservices

我在做什么:

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

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

  • avcodec_decode_video2 - 返回AVFrame结构,该结构封装了来自pakcage的视频视频帧的信息,特别是有data字段,它是指向图片/通道平面的指针。
  • avcodec_decode_audio3 - 返回类型为int16_t *的samples,我猜是原始音频数据

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

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

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

1 个答案:

答案 0 :(得分:2)

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

相关问题