我想将很多视频文件转换为我们公司网站的 Flash 视频。我有一个要求,所有的视频都必须是 360p 格式,所以它们的大小应该是 Nx360。
FFMpeg 使用-s参数将目标分辨率指定为W x H。我不知道W¯¯ IDþ,因为它依赖于源文件的宽高比。如果源为 640x480,目标将为 480x360。如果源为 848x480,目标将为 636x360。
有没有办法用ffmpeg的一些开关来做到这一点?它将保留纵横比,我只会指定目标视频的高度?
我可以通过制作一个程序来轻松解决它,该程序将启动 ffprobe 以获取源视频大小,计算纵横比,然后计算新的宽度。
小智 15
您可以尝试添加此视频过滤器:
-vf "scale=-1:360"
Run Code Online (Sandbox Code Playgroud)
-1 在这种情况下意味着可变/未知,因此此过滤器调整视频大小以保留输入的纵横比,保持 360 作为高度。
对我来说,这达到了您正在寻找的相同结果。
还没有足够的点数来评论现有答案,但这是遵循 user65600 的答案,并在特定编解码器需要可被 2 整除的宽度/高度时更进一步(例如 libx264)
当您使用 -1(变量/未知)时,它可以返回一个奇数 #。为了保证偶数#,你必须使用类似的东西trunc(ow/a/2)*2,它会自动计算最接近的偶数#,同时保持纵横比。
-vf "scale=trunc(ow/a/2)*2:360"
Run Code Online (Sandbox Code Playgroud)
来源:https : //ffmpeg.org/trac/ffmpeg/ticket/309
| 归档时间: |
|
| 查看次数: |
13493 次 |
| 最近记录: |