我正在尝试转换我的高质量电影收藏以节省一些磁盘空间。我了解到 2 Pass 编码会做得更好。这是我用来使用 2 Pass 编码视频的命令行。
ffmpeg -i input.mkv -c:v libx264 -vf "scale=1920x1080" -vb 3.5M -pass 1 -an pass1.mp4
ffmpeg -i input.mkv -c:v libx264 -vf "scale=1920x1080" -vb 3.5M -pass 2 -c:a copy pass2.mp4
这很好用。而且我知道这个命令也会给出第一遍的输出。没问题。我会删除它们。我的疑问是,我读过很多论坛,人们在 2 遍编码中使用-y
和命令。和做什么?-passlogfile
-y
-passlogfile
另外我可以添加其他设置来提高质量吗?
答案1
tl;dr --crf
除非你需要特定的文件大小,否则只需使用 1-pass
- 1 次传递比 2 次传递更快。
- 2-pass 不会产生质量更好或更小的文件:它只允许您设置输出文件大小(但不能设置质量),而
-crf
允许您选择质量(但不能选择文件大小)。
问题
我了解到 2 Pass 编码可以更好地完成这项工作。
两通将带来更好的工作针对特定的输出文件大小。否则,只需使用 进行一次传递-crf
。
我知道这个命令也会给出第一遍的输出。没关系。我会删除它们。
您可以输出到/dev/null
(Linux 和 macOS)或NUL
(Windows)并避免创建临时文件:
ffmpeg -y -i input.mkv -c:v libx264 -vf "scale=1920:1080" -b:v 3.5M -pass 1 -an -f mp4 /dev/null
ffmpeg -y -i input.mkv -c:v libx264 -vf "scale=1920:1080" -b:v 3.5M -pass 2 -c:a aac output.mp4
看FFmpeg Wiki:H.264 - 双程了解更多信息和示例。
-y
和起什么-passlogfile
作用?
-y
覆盖输出文件而不要求确认。第一次操作时这样做是有意义的,否则它会询问你File '/dev/null' already exists. Overwrite ? [y/N]
。是的,你可以“覆盖”/dev/null
。-passlogfile
ffmpeg2pass-0.log
设置两遍日志文件名。除非您想使用自定义日志文件名而不是默认 ( ),否则无需使用此选项。
查看ffmpeg
文档了解有关这些选项的更多信息。
另外我可以添加其他设置来提高质量吗?
- 使用您有耐心的最慢预设。参见FFmpeg 维基:H.264。
- 增加比特率。
- 使用更高效的编码器,例如 libx265。请参阅FFmpeg 维基百科:H.265。请注意,它很慢。
- 避免升级。尝试不同的缩放算法看看什么对你来说最好:
"scale=1920:-2:flags=lanczos"
。 - 购买另一个驱动器并且不要重新编码。