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

ffmpeg quality conversion options (video compression)

您能否提供 link 或解释 -q:v 1 参数,该参数涉及 ffmpeg 中的 video/image 质量和压缩。

让我解释一下...

for f in *
   do 
     extension="${f##*.}"
     filename="${f%.*}"
     ffmpeg -i "$f" -q:v 1 "$filename"_lq."$extension"
     rm -f "$f"
   done

上面的 ffmpeg for 循环会压缩您工作目录中的所有图像和视频,它基本上会降低质量,从而导致较小的文件大小(期望的结果)。

我对这个 for 循环的 -q:v 1 参数最感兴趣。 -q:v 1 参数中的 1 控制压缩量。但是我找不到任何文档来描述如何更改 1 的这个值,并描述它的作用。是百分比吗?乘数?如何调节这个旋钮? Can/should 我使用负值?只有整数? Min/max 价值观?等等

我从 the official documentation 开始,但我能找到的最好的部分是关于视频质量的部分,-q 标志描述很少。

-frames[:stream_specifier] framecount (output,per-stream)
Stop writing to the stream after framecount frames.
.
-q[:stream_specifier] q (output,per-stream)

-qscale[:stream_specifier] q (output,per-stream)
Use fixed quality scale (VBR). The meaning of q/qscale is codec-dependent. If qscale is used without a stream_specifier then it applies only to the video stream, this is to maintain compatibility with previous behavior and as specifying the same codec specific value to 2 different codecs that is audio and video generally is not what is intended when no stream_specifier is used.

此选项是 -qscale:v 的别名,这可能就是您在研究过程中没有遇到它的原因(尽管我的结果首先出现在 google 上的“ffmpeg q:v” ). 这个 link 解释了 qscale 选项为什么不是乘数或百分比,而是比特率模式(所以它是比特率)。对于给定的编码器,这个数字越低,比特率和质量就越高。它通常跨越 1-31,但一些编码器可以接受此范围的子集。

-q:v 可能被忽略了

您正在输出 MP4,因此很可能您正在使用输出 H.264 视频的编码器 libx264。

-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

有关此选项的详细信息,请参阅 How can I extract a good quality JPEG image from a video file with ffmpeg?