我们正在尝试构建一个基于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的文件!!
我应采用什么策略/方法,以便上传的视频大小为“上限”,但相同长度的低质量视频不会“膨胀”到相同的大小!
答案 0 :(得分:1)
看起来你正在使用-b
标志强制比特率。使用-minrate
和-maxrate
标记as listed in the documentation而不是设置特定比特率时会发生什么?
另一个有趣的选项是-fs
,它设置了最大文件大小。如果您可以在编码之前确定视频的长度,您可以根据该长度确定一个好的上限。