【问题标题】:How can I achieve the best overall FLV quality with FFMPEG?如何使用 FFMPEG 获得最佳的整体 FLV 质量?
【发布时间】:2011-03-13 00:17:07
【问题描述】:

我希望以最小的文件大小完成质量最好的 FLV。毕竟,这不是每个人的目标吗?如果有任何不同,这些视频将被流式传输。

目前,我的视频宽度不超过 320 像素,有些是宽屏的,因此它们的高度略小于 240 像素。就目前而言,转换后的 FLV 的质量很差。

当前命令:

> ffmpeg -i video.mov -ar 22050 -ab 32 -f flv -s 320x240 -aspect 4:3 video.flv

【问题讨论】:

  • 使用-b 标志播放,即视频比特率。默认值为 200。
  • 使用-q 标志设置Quality。默认情况下它很低。这就是为什么没有它进行转换会使视频质量变差。

标签: video ffmpeg flv video-encoding


【解决方案1】:

到目前为止,我对提供的选项没有任何运气 - 它们中的大多数对我的输入文件没有影响,这一直产生低质量的结果 - 但以下确实非常有效:

ffmpeg -qscale 4 -i infile.avi outfile.flv

降低 qscale 值以获得更好的质量,增加它以获得更小的文件大小。来自the docs

-qscale n 其中n 是一个从 1 到 31 的数字,1 是最高质量/最大文件大小,31 是最低质量/最小文件大小。

在 Mac OS X 10.6.8 上测试。

【讨论】:

  • 这对我也很有效。比我通过调整 qmax 和 qmin 所能达到的质量要高得多!
【解决方案2】:

我认为最大化比率质量/大小的最佳解决方案是完全废弃 ffmpeg 的“flv”编码,而改用 H.264。

我通常使用手刹将文件转换为 MP4/AAC,然后只使用 FFMPEG 将文件重新混合到 FLV 容器中。

ffmpeg -i input_file.mp4 -vcodec copy -acodec copy -y output_file.flv

手刹的参数也很多,一些有趣的预设可以在这里找到:http://trac.handbrake.fr/wiki/BuiltInPresets

【讨论】:

  • 但这一切都是在服务器端完成的......不能为此使用手刹。
  • 我说的是handbrake的命令行界面,当然是HandBrakeCLI。
  • 那么可以在服务器上使用命令行界面吗?我想你可以......这似乎有点令人费解,不是吗?
  • 不,不是。使用只能使用 CLI 程序的 CLI 程序是这样做的唯一方法。
  • 当您可以将-vcodec libx264 用于ffmpeg(-c:v libx264 in avconv)并获得相同的结果时,这有点令人费解。顺便说一句,我还建议将 h.264 编解码器与 flv 容器一起使用。
【解决方案3】:

默认情况下,flv 默认为 200Kb,并且 qmax 高达 30(因为您没有覆盖它),它可能会产生接近该值的输出。 您可以通过以下任一方式解决此问题:

  • 将 qmax 设置为较低的值会强制质量控制提高 birate 以满足要求。
  • 使用 -vb 400k 提高比特率

在我刚刚尝试的测试视频中,-qmax 10 给出了可接受的输出。 使用 qmax 和 qmin 设置可接受质量的上下限是首选方式。

【讨论】:

  • 谢谢你...你能解释一下 -qmax 实际上在做什么吗?它的价值代表什么?
  • 这些值控制量化器对输入的严格程度。 q 比例为 1 将尽可能多地保留。尽管帧 ffmpeg 的编码部分计算出 q-scale 并根据您的 qmin 和 qmax 值决定丢弃/保留多少。如果它不在这些值之内,它会钳制到最近的值并使用它。基本上,它将 q-scale 保持在您设置的限制范围内,并相应地分配位,以节省它设法压缩得比您需要的更好的位,并在低于您的要求时使用它们。
  • 那么什么是优质的好例子......请记住,默认值会产生一些糟糕的结果。 -qmin 8 和 -qmax 10?还是我需要用-qscale 做点什么?感谢您的帮助。
  • 由于 qmax 和 qmin 值与原始文件的质量有关,恐怕它只需要一些实验。您可以使用 -ss 和 -t 仅对文件的一部分进行编码。尝试从 -qmin 2 -qmax 8 开始。当前的 qscale 和比特率在其编码时显示。如果质量仍然太低,则降低 qmax(例如 -qmax 6),如果质量还可以但比特率太高,则增加 qmin(例如 -qmin 4)。有时使用 flv,您只需设置一个比特率并让它瞄准它(-b 400k),不要忘记 k 否则它会假定它以比特为单位。
  • Russ,非常感谢您在 FFMPEG 方面帮助我。我将对此进行测试并确保它可以满足我的需要。您是否也知道为什么当我尝试将视频比例设置为宽屏时,视频始终保持全屏状态?我试过使用纵横比,然后是物理视频大小,但它似乎没有做任何事情......
猜你喜欢
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 2021-05-20
  • 2012-06-20
  • 2011-05-30
  • 2013-09-23
相关资源
最近更新 更多