ffmpeg质量转换选项视频压缩

问题描述

您能否在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循环的for自变量最感兴趣。 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时,为2个不同的音频和视频编解码器指定相同的编解码器特定值通常不是目的。使用。

解决方法

-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

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

,

此选项是-qscale:v的别名,这可能是您在研究期间没有遇到它的原因(尽管我的搜索结果首先出现在Google上的“ ffmpeg q:v”)。 此link说明了qscale选项不是乘数或百分比,而是比特率模式(因此是比特率)。对于给定的编码器,此数字越小,比特率​​和质量越高。它通常跨度为1-31,但某些编码器可以接受此范围的子集。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...