Mar*_*tos 21 video compression ffmpeg framerate
我不想为 FFMPEG/libx264 (-r/-framerate) 提供固定的帧速率,而是想指定一个具有 MAXIMUM 值的可变帧速率,并允许 libx264 在它认为合适的时候降低帧速率。这里的想法是在有扩展静止帧之类的东西时获得额外的压缩(这在我的源视频中发生了很多)。
我意识到预测或双向 MPEG 帧会压缩得非常好,但也有可能源帧速率小于我打算转码的帧速率(可能导致更大的流!)。
小智 27
对您也没有找到答案感到沮丧,我至少要回答其他人关于如何从 FFMPEG启用 VFR(而不是 V B R)输出的问题。
答案是奇怪的命名-vsync选项。您可以将其设置为几个不同的选项,但您想要的是 '2' 或vfr. 从手册页:
-vsync 参数
视频同步方法。出于兼容性原因,旧值可以指定为数字。必须始终将新添加的值指定为字符串。
0、直通
- 每个帧都带有它的时间戳从多路复用器传递到多路复用器。
1、参照
- 帧将被复制和丢弃,以准确实现所要求的恒定帧速率。
2、视觉效果
- 帧与其时间戳一起传递或丢弃,以防止 2 个帧具有相同的时间戳。
降低
- 作为直通但会破坏所有时间戳,使复用器根据帧速率生成新的时间戳。
-1,自动
- 根据多路复用器功能在 1 和 2 之间进行选择。这是默认方法。
请注意,在此之后,多路复用器可能会进一步修改时间戳。例如,在启用格式选项avoid_negative_ts的情况下。
使用 -map,您可以选择应从哪个流中获取时间戳。您可以保持视频或音频不变,并将剩余的流同步到不变的流。
但是,我没有足够的声誉来发表评论来回答每个人似乎都有的“子问题”。但我确实有一些想法,老实说,我并不是很乐观……但我尝试的第一个想法确实奏效了。所以。
您只需要将-vsync 2选项与-r $maxfps选项结合起来,当然可以用$maxfps您想要的最大帧率替换!它有效!它不会从源文件复制帧,但会丢弃导致文件超过最大帧率的帧!
默认情况下,它-r $maxfps本身似乎只是导致它复制/丢帧以实现恒定的帧速率,并且-vsync 2它本身会导致它直接拉入帧而不会真正影响 PTS 值。
我对此并不乐观,因为我已经知道-r $maxfps它会保持恒定的帧率。老实说,我期待一个错误,或者它只是服从先出现的或最后出现的或无论如何。它完全符合我的要求这一事实让我对 FFMPEG 开发人员感到非常满意。
我希望这对您或其他人有所帮助,如果您不再需要知道这一点。
| 归档时间: |
|
| 查看次数: |
29389 次 |
| 最近记录: |