Получение несоответствия цветов при преобразовании исходных данных NV12 в H264 с использованием FFMPEG - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь преобразовать необработанные данные NV12 в H264, используя hw-кодировщик FFMPEG.

, чтобы передать необработанные данные в кодировщик. Я передаю структуру 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

1 Ответ

0 голосов
/ 29 января 2019

Я решил проблему несоответствия цветов, передав правильный размер строки и значение данных структуры AVFrame.

Скажем, у NV12 есть плоскость YYYYUVUV для изображения 4x4, затем в ffmpeg нам нужно передать

lineize[0] = начальное местоположение y

linesize [1] = 4, потому что местоположение u началось с 4, и нам не нужно указывать lineize [2], потому что uv упакованы.

, а такжев случае данных

data [0] = начальная точка y

data [1] = 4

...