使用FFMPEG从NV12原始数据转换为H264时出现颜色不匹配
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用FFMPEG从NV12原始数据转换为H264时出现颜色不匹配相关的知识,希望对你有一定的参考价值。
我正在尝试使用FFMPEG的hw编码器将NV12原始数据转换为H264。
将原始数据传递给编码器我使用以下逻辑传递AVFrame结构:
uint8_t * buf;
buf = (uint8_t *)dequeue();
frame->data[0] = buf;
frame->data[1] = buf + size;
frame->data[2] = buf + size;
frame->pts = frameCount;
frameCount++;
但是使用这个逻辑,我得到的颜色不匹配的H264数据,
有人能告诉我,如何将缓冲区传递给AVFrame数据?
感谢提前,harshil
答案
我通过传递AVFrame结构的正确lineize和数据值来解决颜色不匹配问题。
假设NV12有4x4图像的YYYYUVUV平面,那么在ffmpeg中,我们需要通过
linesize [0] = y的起始位置
linesize [1] = 4因为u的位置从4开始,我们不需要指定linesize [2],因为uv是打包的。
以及数据的情况
data [0] = y的起始位置
数据[1] = 4
以上是关于使用FFMPEG从NV12原始数据转换为H264时出现颜色不匹配的主要内容,如果未能解决你的问题,请参考以下文章