【问题标题】:Why the converted videos file size is greater than original file size?为什么转换后的视频文件大小大于原始文件大小?
【发布时间】:2012-01-05 15:25:17
【问题描述】:

我正在使用 ffmpeg 将视频转换为 mp4。它工作正常并且播放质量很高。没问题。但最坏的情况是我上传了 14Mb 文件,然后将其转换为 30Mb 文件。我正在使用按照脚本进行转换

exec("ffmpeg -i videowithaudio.flv -vcodec libx264 -vpre hq -vpre ipod640 -b 250k -bt 50k -acodec libfaac -ab 56k -ac 2 -s 480x320 video_out_file.mp4 > output1.txt 2> apperror1.txt");   //webkit compatible

我正在使用 PHP 来执行这个命令。请你帮我把文件大小从这个 30Mb 减小(几乎可以上传文件大小)并保持相同的质量。

【问题讨论】:

标签: ffmpeg


【解决方案1】:
exec("ffmpeg -i videowithaudio.flv -vcodec libx264 -vpre hq -vpre ipod640 -b 250k -bt 50k -acodec libfaac -ab 56k -ac 2 -s 480x320 video_out_file.mp4 > output1.txt 2> apperror1.txt");   //webkit compatible

对于文件大小来说很重要的是bitrate。比特率指定每秒视频使用多少字节。如果降低比特率,文件大小也会变小。

您当前正在使用 250kbit/s 视频 (-b 250k) 和 56kbit/s 音频 (-ab 56k),因此您必须减少这些数字。例如,您可以尝试:-b 100k -ab 32k。但请记住,当您降低比特率时,质量也会降低。如果质量变得太差,您还可以降低帧速率或帧大小以提高质量。

【讨论】:

    【解决方案2】:

    您应该尝试调整关键帧速率 (-g)。关键帧之间的帧只有与前一个关键帧不同的像素。如果您的关键帧相距太远,所有像素都出现在中间帧中(增大尺寸),太近并且关键帧的数量会增加文件大小。

    请注意,每个视频的最佳关键帧率会有所不同,因此您需要找到中间立场。

    【讨论】:

      【解决方案3】:

      flv 转换为mp4 的文件总是比源文件大。通常flv文件比其他格式小,这就是youtube将所有文件转换为flv的原因。

      您可以使用-sameq 参数来保留视频的质量和生成的输出文件的较小文件大小。

      示例 1:

      ffmpeg -i input.flv -sameq -ar 22050 output.mp4
      

      示例 2:

      exec("/usr/bin/ffmpeg -y -i input.flv -acodec libfaac -sameq -ar 44100 -ab 96k -coder ac -me_range 16 -subq 5 -sc_threshold 40 -b 1600k -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -i_qfactor 0.71 -keyint_min 25 -b_strategy 1 -g 250 -r 20 output.mp4");
      

      我通过大量搜索创建了这个命令,这满足了我的要求,使用它你可以获得更小的文件大小但质量相同。

      希望这对你也有用。

      【讨论】:

      • 感谢您在此处提供的信息。这是有道理的。但是您提供的是使文件大小比以前的 30Mb 多到 40MB。所以我不能接受这个。对不起!
      • 我并没有要求你按原样使用这个命令,只是删除你不想要的参数。
      猜你喜欢
      • 1970-01-01
      • 2017-12-14
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多