查看: 4499|回复: 2
收起左侧

[求助] [已解决]ffmpeg 转码如何限制输出的分辨率的最大值

[复制链接]
sorspray
发表于 2017-11-30 09:54:15 | 显示全部楼层 |阅读模式
本帖最后由 sorspray 于 2017-11-30 22:01 编辑

比如移动设备的分辨率为800*600,要求转换后的视频的宽度不超过600且高度不超过800

现在有一个视频分辨率为1280*720,则输出视频为800*450,高度不足600
命令行为 ffmpeg.exe -i input -c:v libx264 -vf scale=800:-1 -c:a copy output.mp4

再有一个视频 分辨率为720*720,则输出视频为600*600,宽度不足800
命令行为  ffmpeg.exe -i input -c:v libx264 -vf scale=-1:600 -c:a copy output.mp4

如何用一个命令行可以完成以上2种需要?

os52
发表于 2017-11-30 15:39:07 | 显示全部楼层
res=$(ffmpeg -i input 2>&1 | grep -ioP '[0-9]+x[0-9]+')
width=$(echo "${res}"|grep -ioP '([0-9]+)'|head -1)
height=$(echo "${res}"|grep -ioP '([0-9]+)'|tail -1)
if [[ $(awk "BEGIN{print ${width}/${height}}") > $(awk "BEGIN{print 800/600}") ]] ; then
ffmpeg.exe -i input -c:v libx264 -vf scale=800:-1 -c:a copy output.mp4
else
ffmpeg.exe -i input -c:v libx264 -vf scale=-1:600 -c:a copy output.mp4
fi
sorspray
 楼主| 发表于 2017-11-30 22:00:57 | 显示全部楼层
os52 发表于 2017-11-30 15:39
res=$(ffmpeg -i input 2>&1 | grep -ioP '[0-9]+x[0-9]+')
width=$(echo "${res}"|grep -ioP '([0-9]+)'| ...

可行,感谢!
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-23 19:26 , Processed in 0.134532 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表