Ffmpeg 为什么转换的视频文件大小大于原始文件大小?

Ffmpeg 为什么转换的视频文件大小大于原始文件大小?,ffmpeg,Ffmpeg,我正在使用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.t

我正在使用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(接近上载的文件大小是可以的)减小。

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");
我通过大量搜索创建了这个命令,它满足了我的要求,使用它,您可以获得更小的文件大小,但质量相同


希望这也适用于您。

您应该尝试使用关键帧速率(-g)。关键帧之间的帧仅具有与上一关键帧不同的像素。如果关键帧相距太远,则所有像素都出现在中间帧中(增加大小),太近,并且关键帧的数量会增加文件大小

请注意,每个视频的最佳关键帧速率将不同,因此您需要找到一个中间地带

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
对于文件大小来说,最重要的是。比特率指定每秒视频使用的字节数。如果降低比特率,文件大小也会变小


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

您可以在网站上获得关于AV问题的更集中的答案,我只能向您保证,是PHP在这里完全没有任何事情要做。谢谢你在这里提供的信息。这是有道理的。但是你给出的是使文件大小超过以前的一个30Mb到40MB。所以我不能接受这个。对不起!我没有要求您按原样使用此命令,只需删除您不需要的参数即可。