ffmpeg视频编码策略,用于防止低质量视频“膨胀”

时间:2011-03-11 16:47:57

标签: php video ffmpeg video-encoding

我们正在尝试构建一个基于php的视频共享网站,允许用户上传自己的内容。

我们需要将所有这些视频转换为中等质量的mp4视频文件,以便通过FlowPlayer进行最终流式传输。

我们的代码是这样的(flv的例子):

system("ffmpeg -i $vidPath -pass 1 -ab 64k -ar 44100 -ac 1 -vcodec flv -b 1500k -cmp 3 -subcmp 3 -mbd 2 $flvPath");

问题是,这会将任何类型的1分钟视频转换为10 MB文件。如果它是一个高质量的1分钟视频,它将被转换为10 MB的文件 - 这很棒。但是,如果它是一个低质量的视频,比如只有2 MB,那么仍将转换为10 MB的文件!!

我应采用什么策略/方法,以便上传的视频大小为“上限”,但相同长度的低质量视频不会“膨胀”到相同的大小!

1 个答案:

答案 0 :(得分:1)

看起来你正在使用-b标志强制比特率。使用-minrate-maxrate标记as listed in the documentation而不是设置特定比特率时会发生什么?

另一个有趣的选项是-fs,它设置了最大文件大小。如果您可以在编码之前确定视频的长度,您可以根据该长度确定一个好的上限。