你好,我需要在我的服务器上存储同一文件的两个版本,中等质量和高清质量,问题是我真的不太了解ffmpeg,所以我只是随机尝试这是代码,我使用下面的代码,但我最终得到了一个大得多的文件,无论它如何工作,它都会播放。
ffmpeg -i inputfile.wmv -vcodec libx264 -ar 44100 -b 200 -ab 56 -crf 22 -s 360x288 -vpre medium -f flv tmp.flv
只需要两个命令来创建两个不同的文件
您需要提供更多信息,说明您的目标比特率、质量或目标文件大小,以及源材料的大小和质量,最好包括使用的编解码器和相关参数。
您应该阅读手册或ffmpeg -h
,或同时阅读两者。您的命令行有几个问题:
- 您正在使用恒定速率因子crf=22,同时仍然试图使用-b 200来限制比特率
- 比特率是以比特/秒为单位指定的(除非您使用的是非常旧的ffmpeg),并且200 bps对任何事情都不可用,请添加
k
以获得千比特/秒 - 您尚未指定音频编解码器,但已指定音频比特率,ffmpeg将尝试为您猜测音频编解码器但我不知道.flv文件的默认编解码器是什么
我假设您发布的命令行应该用于"中等"质量的文件。
你可以尝试的一些建议:
-
先试试这个:指定音频编解码器,例如
-acodec libmp3lame
,或者如果音频格式已经很好,您可以使用-acodec copy
复制它而不进行修改 - 尝试不同的速率因子,例如
-crf 30
,更高的数字意味着更难看的图片质量,但也意味着更小的文件大小 - 尝试不同的编码器预设,例如
-vpre slow
。通常,较慢的预设会启用在编码时需要更多CPU周期的功能,但会带来更好的图像质量,请参阅x264 --fullhelp
或本页,查看每个预设包含的内容 - 进行2遍编码,链接
如果您不想阅读ffmpeg的所有文档和所需的编解码器参数,我建议您查看此备忘单,尽管命令行开关在不同版本的ffmpeg之间发生了变化,因此示例可能不起作用。
命令行示例:
ffmpeg -i inputfile.wmv -vcodec libx264 -crf 25 -s 360x288 -vpre veryslow -acodec libmp3lame -ar 44100 -ab 56k -f flv tmp.flv
参数-s [size]
是输出视频的大小,以像素为单位,对于HD文件,您可能想要1280x720左右的大小,如果您的材质为5:4比例(360x288),则您将尝试1280x1024、960x768或900x720。不要设置比源材料大的大小,因为这只会提升视频的档次,你(可能)最终会得到一个更大的文件,而质量没有任何明显的提高。-ab
参数是音频比特率,您可能也想在HD版本上增加此参数。