将ffmpeg视频转换为适当的维度

时间:2015-03-06 19:42:54

标签: video ffmpeg

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

  • 140p:256 x 144
  • 240p:426 x 240
  • 360p:640 x 360
  • 480p:854 x 480
  • 720p:1280 x 720
  • 1080p:1920x 1080

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

这个问题并不像看起来那么容易。如果用户上传了500 x 300的视频我不希望将其转换为240p,则必须进行一些估算。

谁可以帮助我或有这方面的经验?

1 个答案:

答案 0 :(得分:1)

听起来你想先用“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”,并根据需要选择不同的“标准尺寸”。