FFmpeg:yuv422p10编码

FFmpeg:yuv422p10编码

我正在使用 ffmpeg(仍然是新手)从来自 DeckLink SDI 4K 的视频中提取每个帧。我正在通过管道从我正在构建的软件调用 ffmpeg,命令如下:

ffmpeg -hide_banner -y -format_code Hp50 -raw_format yuv422p10 -video_input sdi -f decklink -vsync 0 -draw_bars true -i 'DeckLink SDI 4K' -f segment -segment_time 0.020000 -f rawvideo -

它生成每个帧,但我无法提取 yuv 数据。我从互联网上看到它被编码为 10 位平面未压缩 yuv 帧(fourcc:p210?)。不幸的是,我无法生成任何有效数据,因为我不知道“y”、“u”和“v”到底在哪里。顺便说一下,我正在自己解码每个帧。

我需要这个输入来对 yuv 10bits 色彩空间中的每一帧进行一些计算。

任何有关 yuv422p10 解码的帮助都非常受欢迎。

答案1

使用

ffmpeg -hide_banner -y -format_code Hp50 -raw_format yuv422p10 -video_input sdi -f decklink -draw_bars true -i 'DeckLink SDI 4K' -pix_fmt yuv422p10be -f rawvideo -

yuv422p10表示三个分量按平面排列,依次发送。

对于每一帧,第一个大小2 x W x H字节数组是 Y 平面。然后是下一个2 x (W / 2 + W % 2) x H字节,即 U 平面。最后,下一个2 x (W / 2 + W % 2) x H字节是 V 平面。然后是下一帧。

上面的 2 的乘数表示填充样本的大小(以字节为单位)。在像素组件的每个 2 字节样本中,低 10 位对数据进行编码。

相关内容