FFMPEG / x264:我可以将一个编码会话中的第 1 遍用作另一个编码会话中的第 2 遍吗?

FFMPEG / x264:我可以将一个编码会话中的第 1 遍用作另一个编码会话中的第 2 遍吗?

问题:

使用某一分辨率/比特率的源视频的“pass 1”编码作为同一源的“pass 2”编码的输入是否合法?不同的分辨率/比特率?我试过了,看到可以工作,但我完全不确定它是否会在一般情况下起作用:流配置文件(I/P/B 帧选择等)看起来与两次传递使用相同的参数不同,但看起来也“足够好”。

我现在需要对这个问题有一个权威的答案。

为什么处于腐败状态 1你会这么做吗?

因为两遍编码修复了 FFMPEG(实际上是 x264)中一个令人抓狂的错误,这个错误可能不会很快得到修复:根据机器的速度,视频的前 1 秒左右通常会具有非常不合适的比特率。这很容易在非常快的机器上重现,将高比特率源流转码为低比特率(例如EC2 c4.8xlarge)。闲置的 i7 四核 MacBook Pro不是足以重现这个错误。

要么是非常高的:

  • 单次 CBR 无血管内皮功能指定的

    (忽略没有 VBV 的 CBR根本不是 CBR

或太低:

  • 单次通过 CBR血管内皮功能
  • 单程 VBR:比例尺血管内皮功能和最大速率

VIFp 和 SSIM 质量测量均表明,较低/高比特率确实与不必要的质量降低/增加相对应(即比特率不应该更高或更低)。

进行两遍 CBR 编码伟大的并解决了问题...如果你有时间的话。不幸的是,我无法承受单一分辨率的两次编码的延迟。

那么你想做什么?

我目前正在以较低的分辨率(480)执行初始转码。这将覆盖尽可能多的播放设备。我想用它作为我的第 1 轮。由于 480 分辨率无论如何都很糟糕,所以我可以将第 1 轮视频发布为我的 480,而不管视频第一秒的比特率有多高。

然后我想使用480 通行证 1 信息并且只在我的高分辨率下传递 2。在 CBR/VBV 情况下,这将是:

ffmpeg -i source.mp4 -pass 1 -vf  scale=852:480 -c:v libx264 -b:v 1000k ... 480.mp4
ffmpeg -i source.mp4 -pass 2 -vf scale=1280:720 -c:v libx264 -b:v 2500k ... 720.mp4

巴尼谷歌

相关内容