如何将YUV(HDYC)的实时视频流转换为RGB

时间:2013-06-19 05:31:59

标签: c++ video ffmpeg webcam color-space

我想从网络摄像头转换视频流。视频流称为HDYC。我认为这有点特别,所以我现在没有控制。

我的问题是如何使用ffmpeg将该格式转换为c ++中的rgb?但是有一些限制。 我不想制作文件。在其他更糟糕的情况下,它需要从网络摄像头转换视频流。这也是一次实时操作。

感谢。

1 个答案:

答案 0 :(得分:0)

我不确定您为什么用标记它,因为HDYCUYVY像素格式,布局和子采样的风格,只有ITU-R Rec. 709定义的色彩空间。

所以你的问题是如何用FFmpeg将BT.709 YUV转换为RGB。 FFmpeg的libswscale可以执行此操作:其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);