将 ffmpeg 视频转换为适当的尺寸

Convert a ffmpeg video to an appropriate dimension

我正在用ffmpeg写一个视频转换脚本,已经完成了。理想情况下,我的视频转换脚本应将视频输出为多种格式(如 YouTube):

我面临的问题是,如果用户上传 480p (854 x 480) 视频或接近 480p (854 x 480) 的视频,脚本将转换为所有格式(1080p 和 720p),这看起来像是在这种情况下浪费带宽和磁盘 space。

问题并不像看起来那么简单。如果用户上传一个 500 x 300 的视频,我不希望它被转换为 240p,必须有一些估计。

谁能帮助我或有解决此类问题的经验?

听起来您想先用 "mplayer -identify " 之类的东西测量视频的大小,然后只转换为比源大小小 5% 的标准大小加上下一个更大的大小标准尺寸。

好的,更详细一些

mplayer -quiet  -identify -vo null -ao null -endpos 0.1 The\ Cat\ Came\ Back.mpg 2>/dev/null  | grep ID_VIDEO

给予

ID_VIDEO_ID=0
ID_VIDEO_FORMAT=0x10000001
ID_VIDEO_BITRATE=1150000
ID_VIDEO_WIDTH=352
ID_VIDEO_HEIGHT=240
ID_VIDEO_FPS=29.970
ID_VIDEO_ASPECT=0.0000
ID_VIDEO_CODEC=ffmpeg1
ID_VIDEO_ASPECT=1.3394

假设您将高度乘以宽度并将其减少 5%

352*240*0.95 = 80256

然后按顺序查看标准尺寸列表,如果这个尺寸小于标准尺寸的 W*H,则对其进行编码。如果它更大,那么您仍然对其进行编码,但是一旦完成,您就不再编码了。

请注意,您可以查看 "ID_VIDEO_ASPECT" 并根据需要根据该值选择不同的 'standard sizes'。