iphone - ffmpeg-X264 将--BGRA 编码为 AVFrame(ffmpeg),反之亦然? IOS

标签 iphone ffmpeg avfoundation x264

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

我的问题是
1.如何转换kCVPixelFormatType_32BGRAAVFrame对于使用 avcodec_encode_video 的 enode?

2.如何从avcodec_decode_video2将AVFrame转换为kCVPixelFormatType_32BGRA@解码端?

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

最佳答案

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

由于您已经将其放入 YUV 格式,您可以使用 CVPixelBufferGetBaseAddressOfPlane(buf,0) 并对该地址进行编码。

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

希望这个对你有帮助。您可以在线找到合适的颜色转换算法。

关于iphone - ffmpeg-X264 将--BGRA 编码为 AVFrame(ffmpeg),反之亦然? IOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9187832/

相关文章:

iphone - iOS:我可以让 UITableView 在 iPhone 横向模式下水平滚动吗?

iphone - 在应用程序进入后台之前是否有任何通知?

php - 在两个不同的用户表之间共享 wordpress 站点

avfoundation - 未调用 captureOutput

swift - 如何在将 avasset 当前项目 URL 更改为另一个 URL 之前存储它

iphone - 获取 iPhone 相机拍摄的最后一张图像

FFMPEG:在 Windows Vista 中找不到预设

ffmpeg - 为什么 ffmpeg yuv420p 转换会影响超过 2x2 block 的像素?

python-3.x - 如何让我的 discord.py 机器人在语音 channel 中播放 mp3?

ios - 纵向模式下的 AVVideoCompositionCoreAnimationTool 和 CALayer?