gpt4 book ai didi

c++ - FFMPEG API : decode MPEG to YUV frames and change these frames

转载 作者:行者123 更新时间:2023-11-28 06:23:14 26 4
gpt4 key购买 nike

我需要使用 C++ 库将所有​​帧从 MPEG4 或 H.264 视频保存到 YUV 帧。例如,采用 .yuv、.y4m 或 .y 格式。然后我需要像数字文件一样读取这些帧并更改一些样本(Y 值)。不转换成 RGB 怎么办?

如何存储 AVFrame->data 的值? Y、U 和 V 值存储在哪里?

感谢和抱歉我的英语=)

最佳答案

如果您使用 libav* 进行解码,您将在其原生色彩空间(通常是 YUV 420)中接收帧,但这是在编码时选择的。假设你在YUV420或者转换成YUV420 y: AVFrame->data[0], u: AVFrame->data[1], v: AVFrame->数据[2]

对于 Y,每个像素 1 个字节 AVFrame->data[0][(x*AVFrame->linesize[0]) + y]对于 U 和 V,其每字节 4 个像素(Y 平面的四分之一分辨率)。所以AVFrame->data[1][(x/2*AVFrame->linesize[1]) + y/2], AVFrame->data[2][(x/2* AVFrame->linesize[2]) + y/2]

关于c++ - FFMPEG API : decode MPEG to YUV frames and change these frames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28995569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com