gpt4 book ai didi

c - 使用 FFMPEG 从 NV12 原始数据转换为 H264 时出现颜色不匹配

转载 作者:行者123 更新时间:2023-11-30 16:22:29 31 4
gpt4 key购买 nike

我正在尝试使用 FFMPEG 的硬件编码器将 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 数据吗?

提前致谢,哈希尔

最佳答案

我通过传递正确的线条大小和 AVFrame 结构的数据值解决了颜色不匹配问题。

假设 NV12 对于 4x4 图像有 YYYYUVUV 平面,那么在 ffmpeg 中,我们需要传递

linesize[0] = y 的起始位置

linesize[1] = 4 因为 u 的位置从 4 开始并且我们不需要指定 linesize[2],因为 uv 已打包。

还有数据

data[0] = y 的起始位置

数据[1] = 4

关于c - 使用 FFMPEG 从 NV12 原始数据转换为 H264 时出现颜色不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54406022/

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