0

我正在使用 libavcodec 使用 x264 对捕获的 Windows 屏幕进行编码。由于输入是 RGB,我将其转换为 YUV 以使其与 x264 兼容。我正在使用 sws_scale 函数。我的问题是这个功能是否有任何替代品,因为在我的情况下我不需要进行任何缩放。此外,如果有人可以阐明此功能的工作流程,那将很有用。

PS:我假设 x264 仅在 YUV 颜色空间中运行。如果这个假设不正确,请同样通知我。

提前致谢。

4

2 回答 2

1

我找不到 swscale 的替代方法,似乎除了快速双线性算法(用于缩放)之外,库中使用的所有其他算法都提供了相当可忽略的颜色偏移。
此外,在没有任何颜色偏移的情况下从 RGB 到 YUV 颜色空间在数学上是不可能的(由于方程中的近似值)。
PS:我无法使用 RGB 版本的 libx264 / libavcodec。如果您有关于如何实现以及如何在 Windows 上构建相应版本的详细信息,请发布相同的链接/信息。

于 2012-12-19T18:30:18.980 回答
0

PS:我假设 x264 仅在 YUV 颜色空间中运行。如果这个假设不正确,请同样通知我。

libx264 支持编码为 YUV 4:2:0/YUV 4:2:2/YUV 4:4:4/ 的 I420/YV12/NV12/I422/YV16/NV16/I444/YV24/BGR24/BGR32/RGB24 输入色彩空间RGB(应在参数中指定)。但是除了 YUV 4:2:0 之外的任何东西都需要解码器的支持,因为它们不是高配置文件的一部分,而是更新的配置文件(高 4:2:2 和高 4:4:4 配置文件)。

于 2012-09-03T09:03:16.523 回答