Col*_*ark 5 video ffmpeg cloudconvert
我正在尝试为电报用户机器人编写脚本,该脚本可以将任何视频/动画转换为.mp4. 我已经有了它,因此脚本可以通信并利用cloudconvert.com的 API 。
现在我的问题出在我传递给 CC 的 ffmpeg 命令中,因为我需要将视频两侧保持在 1280 像素以下。最终视频是720*1280还是1280*1280或其他完全没有关系,只要两侧都不超过1280像素即可。
棘手的部分来了,我不想破坏纵横比,如果视频小于 1280,我不希望视频被放大。
实际相关的代码部分是比例部分。下面这一段会将视频的高度调整为最大 1280 像素,但不考虑宽度,它只是保持比例。
-vf "scale=min'(1280,iw)':-2"
现在我将如何调整或更改它,以便根据哪一侧大于 1280 像素实际调整大小?
我希望我说得足够具体,我期待着您的帮助。
问题仅出现,如果高度大于宽度,这会将宽度的限制数量从 2 增加到 3:
要测试所有情况,您可以使用min(1280,min(iw,round(1280*iw/ih))),创建一个过滤器
-vf "scale=min(1280,min(iw,round(1280*iw/ih))):-2"
Run Code Online (Sandbox Code Playgroud)
编辑
在 ffmpeg 的某些版本中,由于自引用问题,上面的行将不起作用。在这种情况下,我们可以创建另一种思路:
min(iw,1280)min(ih,1280)表达式将是 -vf 'scale=if(gte(iw,ih),min(1280,iw),-2):if(lt(iw,ih),min(1280,ih),-2)'
不要忘记,您可能会通过一些 shell 解析机制来运行它,这会额外产生对逗号进行转义的需要。表达方式
-vf 'scale=if(gte(iw\,ih)\,min(1280\,iw)\,-2):if(lt(iw\,ih)\,min(1280\,ih)\,-2)'
Run Code Online (Sandbox Code Playgroud)
经验证可在 ubuntu Linux 上使用 2.7.2 至 3.4.4 版本
| 归档时间: |
|
| 查看次数: |
4622 次 |
| 最近记录: |