【问题标题】:ffmpeg-X264 encode --BGRA to AVFrame(ffmpeg) and viceversa? for IOSffmpeg-X264 将--BGRA 编码为 AVFrame(ffmpeg),反之亦然? IOS
【发布时间】:2012-02-08 04:25:49
【问题描述】:

我正在使用 Objective c 在 IOS(iphone/ipod/ipad)中进行视频处理。我正在使用 AVFoundation 框架来捕获视频。我想使用 ffmpeg-libx264 对这些视频帧进行编码/解码。我已经为 ios 编译了 ffmpeg-x264 lib。我从 AVFoundation 获得了 kCVPixelFormatType_32BGRA。

我的问题是
1.如何使用avcodec_encode_video将kCVPixelFormatType_32BGRA转换为AVFrame用于enode?​​p>

2.如何将avcodec_decode_video2的AVFrame转换为kCVPixelFormatType_32BGRA@decode端?

请帮助我开始上述过程或提供工作教程的路径。提前致谢。

【问题讨论】:

    标签: iphone ffmpeg avfoundation x264


    【解决方案1】:

    如果您尝试使用 FFMpeg,则需要使用 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange 而不是 kCVPixelFormatType_32BGRA,然后您可以将其放入 AVFrame。您可能还希望将从 iOS 相机 (YUVNV12) 获取的内容转换为 YUV420P,以便您可以在其他非 iOS 设备上接收它。如果您只是在使用 iOS 设备并且只关心这些,则可以跳过颜色转换的这一面,直接将其打包到 AVFrame 中。

    由于您已经将其转换为 YUV 格式,您只需使用 CVPixelBufferGetBaseAddressOfPlane(buf,0) 并对该地址进行编码。

    解码图像后,您需要将颜色从 YUV420P 更改为 BGRA。如果您在编码之前没有正确交换颜色,您只需将 YUVNV12 更改为 BGRA。

    希望这会有所帮助。你可以在网上找到合适的颜色转换算法。

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 2013-01-15
      • 1970-01-01
      • 2016-05-10
      • 2020-07-08
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多