FFMPEG合理的默认值

ddl*_*ack 4 ffmpeg

我正在使用ffmpeg使用像这样的vfilter使用PNG文件为视频添加水印:

ffmpeg -i 26.wmv -vcodec libx264 -acodec copy -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:10 [out]" 26_w.mkv
Run Code Online (Sandbox Code Playgroud)

但是,输入文件的质量/比特率都不同,我希望输出文件的质量/比特率与输入文件相似.我怎么做到这一点?另外,我对ffmpeg几乎一无所知,那么有没有什么选择可以提供良好的质量:文件大小比例?

llo*_*gan 18

通常希望输出与输入"相同的质量"是人们总是想要的假设.不幸的是,当使用有损编码器时这是不可能的,甚至无损编码器也可能由于色彩空间转换,色度子采样和其他问题而无法提供相同的质量.但是,使用有损编码器时,您可以实现视觉无损(或接近)输出; 这意味着它看起来好像输出质量与您的眼睛相同,但从技术上讲它并非如此.此外,尝试使用相同的比特率和其他参数作为输入将很可能无法实现您想要的.

例:

ffmpeg -i input -codec:v libx264 -preset medium -crf 24 -codec:a copy output.mkv
Run Code Online (Sandbox Code Playgroud)

您要调整的两个选项是-crf-preset.CRF(恒定速率因子)是您的质量水平.较低的值是较高的质量.预设是一组选项,可以提供特定的编码速度与压缩权衡.较慢的预设将编码较慢,但将实现更高的压缩(压缩是每个文件大小的质量).基本用法是:

  1. 使用仍然可以提供所需质量的最高crf值.
  2. 使用您有耐心的最慢预设(参见x264 --help预设列表并忽略安慰剂预设,因为这是一个笑话).
  3. 将这些设置用于其他视频.

其他说明:

  • 您无需对整个视频进行编码即可测试质量.您可以使用-ss-t选项选择要编码的随机部分,例如-ss 30 -t 60将跳过前30秒并创建60秒输出.

  • 在此示例中,音频是流复制而不是重新编码.

  • 请记住,每个编码器都不同,适用于x264的编码器不适用于其他编码器.

  • -pix_fmt yuv420p如果输出不能在像QuickTime这样的愚蠢玩家中播放,请添加.

另见: