我在做什么:
我需要在 iPhone/iPad 上播放 Apple 不支持的音频和视频文件,例如包含多个音频 channel 的 mkv/mka 文件。
我正在使用 libffmpeg 在媒体文件中查找音频和视频流。
正在使用 avcodec_decode_video2
解码视频和音频与 avcodec_decode_audio3
每个函数的返回值如下
avcodec_decode_video2
- 返回 AVFrame
封装了来自pakcage的视频视频帧信息的结构,具体是有data
字段是指向图片/ channel 平面的指针。 avcodec_decode_audio3
- 返回 samples
类型 int16_t * 我猜是原始音频数据 所以基本上我已经完成了所有这些并成功解码了媒体内容。
我必须做的:
我必须使用 Apple 服务相应地播放音频和视频。我需要执行的播放应该支持在播放视频时混合音频 channel ,即假设 mkv 文件包含两个音频 channel 和一个视频 channel 。所以我想知道哪种服务适合我?我的研究表明,AudioQueue 服务可能是有用的音频播放,并且可能是视频的 AVFoundation。
请帮助为我的情况找到合适的技术,即视频播放 + 音频播放以及可能的音频 channel 混合。
最佳答案
你走在正确的道路上。如果您只播放音频(根本不录制),那么我会使用 AudioQueues。它会为你做混合。如果您正在录制,那么您应该使用 AudioUnits。看看 Apple 的 MixerHost 示例项目。对于视频,我建议使用 OpenGL。假设图像缓冲区在 YUV420 中,那么您可以使用简单的两遍着色器设置来渲染它。我相信有一个 Apple 示例项目展示了如何做到这一点。在任何情况下,您都可以使用 OpenGL 渲染任何像素格式,并使用着色器将像素格式转换为 RGBA。希望这有帮助。
关于iphone - 播放音频和视频内容的正确选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158024/