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

标签 iphone ffmpeg avfoundation core-audio audioqueueservices

我在做什么:

我需要在 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/

    相关文章:

    android - API/数据源 - 链接和按使用付费

    iphone - 当 TableView 滚动时值发生变化

    iphone - 直接从 Core Data 获取的具有多对多的单个 UITableView

    ffmpeg可以解码G711音频吗

    iphone - CMBlockBuffer 创建内存管理

    iphone - 在 NSThread 中使用 Singleton 同步数组

    python - 每当尝试将 write_videofile 运行到 moviepy 中的剪辑时,都会出现 "TypeError: must be real number, not NoneType"

    python-3.x - python 的 ffmpy 是否不适用于使用 tempfile.TemporaryFile 制作的临时文件?

    swift - 如何在运行时将 CIFilter 添加到视频

    带有 AVCaptureVideoDataOutput 的 iOS 应用程序在 App Store 版本中崩溃