【发布时间】:2021-02-20 23:02:58
【问题描述】:
在我的程序中,用户可以输入他想要的任何视频文件,并将其转码以供社交媒体使用,无论其尺寸和纵横比如何。 “导出配置文件”有很多变量,但这里重要的是 maxheight 和 maxwidth。
FFMpeg 过滤器必须输出符合以下规则的视频:
- 如果视频是垂直的,则排列 maxheight 和 maxwidth 值(社交媒体将 1280x720 和 720x1280 都视为“720P”)
- 视频的高度不得高于 maxheight 或宽度不得高于 maxwidth。
- 原始视频和导出的视频具有相同的宽高比,不会出现失真。
- 不应发生填充或裁剪。
- 如果视频已经低于这些最大尺寸(不放大),则不应缩放视频。
- 即使输入分辨率为奇数,该函数也必须工作。
我已经尝试找到可以做到这一点的过滤器组合,但到目前为止我还没有做到,如果宽高比不正确,视频会失真或出现巨大的黑条,解决方案可能很简单,但我是这个库的初学者,所以我可能只是缺少一个简单的解决方案。
我目前的解决方案:
ffmpeg -i input.mp4 -vf [in] scale=1280:720:flags=lanczos:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1 [res]; [res] format=yuv420p [format] -c:v libx264 -c:a aac -movflags +faststart output.mp4
感谢阅读
【问题讨论】:
标签: video ffmpeg transcoding