Я хочу конвертировать видео потоки с веб-камеры. эти видеопотоки называются HDYC. Я думаю, что это немного особенное, поэтому я не контролировал сейчас.
Мой вопрос: как преобразовать этот формат в rgb в c ++, используя ffmpeg? но есть некоторые ограничения.
Я не хочу делать файл. другими словами, он должен конвертировать видео потоки с веб-камеры. также это операция в реальном времени.
Благодарю.
Я не уверен, почему вы отметили это h.264, так как HDYC
это вкус UYVY
формат пикселей, макет и подвыбор, просто с Рек. МСЭ-R 709 определенное цветовое пространство.
Итак, ваш вопрос заключается в том, как конвертировать BT.709 YUV в RGB с помощью FFmpeg. Libswscale FFmpeg может сделать это: его sws_scale
делает преобразование, и его sws_setColorspaceDetails
позволяет вам предоставить детали цветового пространства для преобразования.
/**
* Scale the image slice in srcSlice and put the resulting scaled
* slice in the image in dst. A slice is a sequence of consecutive
* rows in an image.
[...] */
int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[],
const int srcStride[], int srcSliceY, int srcSliceH,
uint8_t *const dst[], const int dstStride[]);
/**
[...]
* @param table the yuv2rgb coefficients describing the output yuv space, normally ff_yuv2rgb_coeffs[x]
[...] */
int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4],
int srcRange, const int table[4], int dstRange,
int brightness, int contrast, int saturation);
Других решений пока нет …