FFmpeg质量转换选项(视频压缩)

5
请问您能否提供一个链接或说明,关于ffmpeg中用于处理视频/图像质量和压缩的-q:v 1参数。让我来解释一下...
for f in *
   do 
     extension="${f##*.}"
     filename="${f%.*}"
     ffmpeg -i "$f" -q:v 1 "$filename"_lq."$extension"
     rm -f "$f"
   done

上面的ffmpeg循环压缩工作目录中的所有图像和视频,它基本上降低了质量,从而使文件大小变小(期望的结果)。
我最感兴趣的是这个for循环中的-q:v 1参数。-q:v 1参数中的1控制压缩的程度。但我找不到任何描述如何更改此值的文档,并描述它的功能。它是百分比吗?乘数?我该如何调整这个旋钮?可以/应该使用负值吗?只能使用整数吗?有最小/最大值吗?等等。
我从官方文档the official documentation入手,但我找到的最好的部分是关于视频质量的一个章节,而且-q标志的描述也很简略。

-frames[:stream_specifier] 帧数 (输出,每个流)
在帧数达到指定数量后停止向该流写入。
.
-q[:stream_specifier] q (输出,每个流)

-qscale[:stream_specifier] q (输出,每个流)
使用固定的质量比例(VBR)。q/qscale 的含义取决于编解码器。如果未指定 stream_specifier 就使用 qscale,则仅适用于视频流,这是为了保持与以前行为的兼容性,并且当不使用 stream_specifier 时,指定相同的编解码器特定值到两个不同的编解码器(音频和视频)通常不是预期的。


你正在使用什么编码器?如果你不知道,那么 $extension 是什么? - llogan
@llogan 我在命令行输入了 extension,但没有任何反应。我想我不理解这个问题。 - Display name
-q:v/-qscale:v 取决于编码器。我想知道您使用的编码器是什么,以便给出准确的答案。如果您不确定使用的编码器是哪个,我会要求输出文件的扩展名(.mp4.mkv.avi.mov 等)。 - llogan
@llogan 输出文件是.mp4格式。 - Display name
2个回答

13

-q:v 可能被忽略了

你正在输出 MP4,所以很可能你正在使用编码器 libx264 输出 H.264 视频。

-q:v / -qscale:v 被 libx264 忽略。

控制台输出甚至提供了一个关于这个的警告:-qscale is ignored, -crf is recommended.

更多关于 -crf 的信息,请参见 FFmpeg Wiki: H.264

什么时候可以使用 -q:v

MPEG* 编码器(mpeg4、mpeg2video、mpeg1video、mjpeg、libxvid、msmpeg4)可以使用 -q:v / -qscale:v

有关此选项的更多信息,请参见 如何使用 ffmpeg 从视频文件中提取出高质量 JPEG 图像?


3

这个选项是-qscale:v的别名,这可能就是为什么在您的研究中没有遇到它的原因(尽管我的结果在谷歌搜索“ffmpeg q:v”中排名第一)。

链接解释了qscale选项不是倍数或百分比,而是码率模式(因此与码率有关)。对于给定的编码器,这个数字越低,码率和质量就越高。通常它的范围是1-31,但有些编码器可以接受这个范围的子集。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接