首先,我只想多说一下我的标题,我并不是指升级不会添加数据(升级时经常问到) - 而是指一些不同的东西。
例子
我有原始视频 A1 (854x480)
我对 A1 到 B1 进行编码,忽略比例 - 因此保持相同的 854x480。
ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 C:\B1.mkv
我在播放器中播放此视频,并通过放大播放器的窗口来将其放大,视频现在是 1092x614,我保存了第 88 帧的屏幕截图。
我现在将 A1 编码为 C1,指定比例为 1092x614(就像我们的屏幕截图一样)
ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 -filter_complex scale=1092:614 C:\C1.mkv
我保存了 C1 中第 88 帧的屏幕截图,其原始屏幕尺寸为 1092x614
因为我对两种编码都使用了 Raw Original,所以我假设两个屏幕截图看起来会相同 - 但事实并非如此,与手动放大的编码 B1 相比,放大的编码 C1 的质量要差很多。
我认为,当我使用播放器手动升级并查看图像时,ffmpeg 在编码时也会执行相同的操作 - 因此它会看到我看到的相同图像并基于此构建编码,但就好像 ffmpeg 使用的渲染引擎不同/不那么好。
有没有什么办法可以解决这个问题?
我们能用不同的技术实现类似的效果吗?例如编辑原始 Raw A1 的元数据并设置宽度:高度 - 让任何播放器以该尺寸打开视频,在播放时不知不觉地将其放大。
我的用例是尝试模拟大多数主要视频主机可识别的尺寸 - 任何低于阈值的视频都不会被主机使用某些设置进行编码。
答案1
正如您所说,您的原始视频是原始的,这意味着它没有被压缩,当使用播放器手动放大时,它仍然未压缩但经过了插值。意味着它仍然是最高质量的。但 -crf 24 是高压缩,如果您希望视频看起来像放大的原始视频,您可以尝试 -crf 19 或更低。