【问题标题】:ffmpeg quality conversion options (video compression)ffmpeg 质量转换选项(视频压缩)
【发布时间】:2021-01-08 16:11:12
【问题描述】:

您能否提供指向 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 循环会压缩工作目录中的所有图像和视频,它基本上会降低质量,从而导致文件更小(所需的结果)。

我对这个 for 循环的 -q:v 1 参数最感兴趣。 -q:v 1 参数中的 1 控制压缩量。但是我找不到任何描述如何更改1 的值以及描述它的作用的文档。是百分比吗?乘数?这个旋钮怎么调节?我可以/应该使用负值吗?只有整数?最小值/最大值?等等

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

-frames[:stream_specifier] 帧数(输出,每个流)
在帧数帧之后停止写入流。
.
-q[:stream_specifier] q(输出,每个流)

-qscale[:stream_specifier] q(输出,每个流)
使用固定质量等级 (VBR)。 q/qscale 的含义取决于编解码器。如果 qscale 在没有 stream_specifier 的情况下使用,则它仅适用于视频流,这是为了保持与先前行为的兼容性,并且为 2 个不同的编解码器指定相同的编解码器特定值,即音频和视频通常不是没有 stream_specifier 时的预期被使用了。

【问题讨论】:

  • 您使用的是什么编码器?如果您不知道,那么$extension 是什么?
  • @llogan 我在命令行输入了extension,但什么也没发生。我想我不明白这个问题。
  • -q:v/-qscale:v 取决于编码器。我想知道您使用什么编码器来给出准确的答案。我询问了输出文件的扩展名(.mp4.mkv.avi.mov 等),以防您不确定自己使用的是哪个编码器。
  • @llogan 输出文件是 .mp4

标签: linux ffmpeg compression video-processing video-compression


【解决方案1】:

-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?

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-28
      • 2017-03-02
      • 1970-01-01
      • 2017-01-21
      • 2014-05-25
      • 1970-01-01
      • 2015-10-22
      • 2013-12-29
      相关资源
      最近更新 更多