在 Youtube 上串流时的 ffmpeg“-pix_fmt yuv420p”选项

在 Youtube 上串流时的 ffmpeg“-pix_fmt yuv420p”选项

官方教程https://trac.ffmpeg.org/wiki/StreamingGuide使用该-pix_fmt yuv420p选项。

我也使用了它,从教程中复制了它,并且从 FFmpeg 流式传输到 Youtube 对我有用。然而,目前还不清楚它的用途,特别是它是否是 Youtube 的必要选项,或者是否有更好的选项。

关于这个主题的 Youtube 文档似乎没有涵盖这一点,或者可能涵盖了,但我不明白在哪里:https://support.google.com/youtube/answer/1722171?hl=en

有谁知道这方面有任何准确的文件吗?

答案1

YUV420 是一种颜色空间,它使用色度子采样来减少表示图像所需的数据量。色度子采样是一种通过对色度(颜色)信息实现比亮度(亮度)信息更低的分辨率来编码图像的方法。这利用了人类视觉系统对颜色差异的敏感度低于对亮度差异的敏感度。因此,YUV420 可以被认为是一种节省空间的格式,因为与不使用色度子采样的格式相比,它需要更少的数据来表示图像

关于我在流媒体时使用的问题-pix_fmt yuv420p,我找到了一个既通用又特定于 YouTube 的答案。

我的问题中链接的 FFmpeg 流媒体指南(https://trac.ffmpeg.org/wiki/StreamingGuide)通过以下方式使用 H.264 编解码器-vcodec libx264。这也是YouTube官方推荐中建议的编解码器(https://support.google.com/youtube/answer/1722171?hl=en#zippy=%2Cvideo-codec-h)。

YouTube的具体答案可以在该文档中找到,在这句话中:

“色度子采样:4:2:0”。

这正好对应于-pix_fmt yuv420p这与选项

一般答案可以在 H.264 的 FFmpeg 文档中找到:https://trac.ffmpeg.org/wiki/Encode/H.264。页面底部写着:

您可能需要使用-vf format=yuv420p(或别名-pix_fmt yuv420p)来使输出在 QuickTime 和大多数其他播放器中工作。这些播放器仅支持 H.264 视频的 YUV 平面色彩空间和 4:2:0 色度子采样。否则,根据您的来源,ffmpeg可能会输出为与这些播放器不兼容的像素格式。

答案2

我假设您正在寻找的是: https://en.wikipedia.org/wiki/YUV

YUV 实际上是这里的视频格式。

根据我的理解,它仅描述像素/颜色,因此它也有效地未压缩。也就是说,您可以逐个像素地显式地传达颜色数据,而无需使用任何导致 1080p 图像大小不会达到几兆字节的典型技巧。

对于流媒体,我建议使用 OBS (https://obsproject.com/de)。它是开源的并且也使用 ffmpeg,因为所有视频都是如此。 OBS 可以很好地处理这些参数,并且它实际上是行业标准。

由于您在 Unix&Linux 下发布:OBS 可通过许多典型发行版的标准包源获得。

相关内容