我想从网络摄像头转换视频流。视频流称为HDYC。我认为这有点特别,所以我现在没有控制。
我的问题是如何使用ffmpeg将该格式转换为c ++中的rgb?但是有一些限制。 我不想制作文件。在其他更糟糕的情况下,它需要从网络摄像头转换视频流。这也是一次实时操作。
感谢。
答案 0 :(得分:0)
我不确定您为什么用h.264标记它,因为HDYC
是UYVY
像素格式,布局和子采样的风格,只有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);