【问题标题】:What is the file structure of a YUV 420 movie streamYUV 420电影流的文件结构是什么
【发布时间】:2020-07-29 21:09:59
【问题描述】:

问题不在于库或工具,而在于 YUV 4:2:0 电影流的规范(标准或概括定义)。

YUV 420 电影流是否只是一些连接的 YUV 图像,如果是,这些帧和流的规范是什么?

我想为 YUV 420 助手制作一个简单的图像,但如果碰巧它还需要一些计算/压缩/预测,我就投降了。如果它只是需要将图像转换为 YUV 然后将它们附加在一起,我将对其进行编码并在此处共享 C# 源代码。

【问题讨论】:

  • 我想说有两个选择:要么规范存在在线(你找到了吗?为什么不呢?)或者规范不存在(那么这个问题将长期无人回答)。这个查询似乎很有用:google.cz/search?q=yuv420+format

标签: video file-format yuv


【解决方案1】:

两种方式:第一种实际上只是连接 YUV 图像(注意平面的顺序通常是 YVU,而不是 YUV)。对于单帧格式,例如 YV12 格式,这是在内存中布置 YUV 420 图像的一种方式。

另一种方法是用于 MPEG 格式的 YUV,它的作用相同,但以一些标头信息开头:例如,请参见此处:http://wiki.multimedia.cx/index.php?title=YUV4MPEG2

如果您有一个用于 MPEG 的 YUV 文件,那么您在该文件中拥有使用它所需的所有信息。如果您有原始 YUV 文件,则需要知道分辨率、帧速率和二次采样才能使用它。

这里的另一个有趣的问题是,有不同的方法可以将 4:4:4 YUV 图像转换为 4:2:0 YUV 图像,具体取决于您放置子采样网格的位置。隔行扫描也使这有点复杂。

【讨论】:

  • 所以在 MPEG 压缩的引擎盖下有 JPEG 压缩的关键帧。作为第一步,JPEG 将 RGB 图像分解为亮度 (Y) 和色度 (Cb, Cr) 分量 (YCbCr)。所以如果有人马上只需要 YUV,那么 YUV 和 RGB 之间的转换可以绕过,虽然 YUV 和 YCrCb 之间的转换基本上也是矢量转换。
  • 它与 JPEG 不完全相同。不同的 MPEG-1 和 2 使用与 JPEG 不同的量化矩阵和不同的熵编码方案。当然,MPEG-1 和 2 的主要特点是它们进行基于块的运动补偿以降低所需的比特率。但 MPEG 编码器确实使用 YCbCr(通常使用 4:2:0 子采样)作为其输入和输出格式。
【解决方案2】:

这是一个非常古老的话题,但我花了相当长的时间来修复我的 YUV4MPEG2 未压缩视频例程,所以我决定把它写下来。

重要的是要理解 Y、U、V 帧被写成单独的帧。最简单的方法是写入 444 格式,因为您每次只需加载一个输入图像。

假设您有 800x600 像素的图像,名称为 image1、image2...,并希望帧速率为 5 fps:

先写一个字符串头:

        'YUV4MPEG2 W800 H600 F05:1 Ip A0:0 C444'+#10

加载输入image1并写入一个以char 10结尾的字符串head FRAME:

        'FRAME'+#10

写入完整的 800x600 像素 Y 帧,其中 Y:=trunc(R x 77/256 + G x 150/256 + B x 29/256) 和 R,G,B 是红色、绿色和蓝色像素值。 Y 是一个 1 字节的值

         YYYY
         YYYY
         YYYY
         YYYY

写完整的 800x600 像素 U 帧,其中 U:=trunc(R x -43/256 + G x -84/256 + B x 127/256 +128) 和 R,G,B 是红色、绿色和蓝色像素值。 U 是 1 个字节的值。

         UUUU
         UUUU
         UUUU
         UUUU

写完整的 800x600 像素 V 帧,其中 V:=trunc(R x 127/256 + G x -106/256 + B x -21/256 +128) 并且 R,G,B 是红色、绿色和蓝色像素值。 V 是一个 1 字节的值。

         VVVV
         VVVV
         VVVV
         VVVV

对下一张以“FRAME”+#10 开头的图像重复此操作。 文件可以通过 VLC、FFMPEG 和 Youtube 显示。更多信息: http://wiki.multimedia.cx/index.php?title=YUV4MPEG2

另请参阅 https://en.wikipedia.org/wiki/YUV

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    相关资源
    最近更新 更多