2016-07-06 113 views
1

当用户上传视频时,我将其尺寸设置为2。此前,我在两个步骤中像下面这样在单个命令中调整两种尺寸的一个视频的尺寸

第一尺寸:

ffmpeg -i in.mp4 -filter:v "scale=iw*min(1170/iw\,300/ih):ih*min(1170/iw\,300/ih), pad=1170:300:(1170-iw*min(1170/iw\,300/ih))/2:(300-ih*min(1170/iw\,300/ih))/2" out.mp4 

第二尺寸:

ffmpeg -i in.mp4 -filter:v "scale=iw*min(365/iw\,172/ih):ih*min(365/iw\,172/ih), pad=365:172:(365-iw*min(365/iw\,172/ih))/2:(172-ih*min(365/iw\,172/ih))/2" out1.mp4 

但现在缩短处理时间,我想结合这两个步骤合而为一。我已阅读https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs做出以下命令

ffmpeg -i in.mp4 -filter:v "scale=iw*min(1170/iw\,300/ih):ih*min(1170/iw\,300/ih), pad=1170:300:(1170-iw*min(1170/iw\,300/ih))/2:(300-ih*min(1170/iw\,300/ih))/2" bigVideo.mp4 \ -filter:v "scale=iw*min(365/iw\,172/ih):ih*min(365/iw\,172/ih), pad=365:172:(365-iw*min(365/iw\,172/ih))/2:(172-ih*min(365/iw\,172/ih))/2" smallVideo.mp4 

但它给下面的错误

[NULL @ 0xaee5440]无法找到一个合适的输出格式“型滤波器:V” - 筛选: v:无效的参数

所以任何人都可以建议我如何解决它?

+0

尝试删除-filter:v标志并重​​新运行命令。 – arshpreet

+0

已经尝试过,但没有奏效 – Jass

回答

0

我尝试使用下面的脚本来运行这两个命令:

#!/bin/bash 
for cmd in "[email protected]"; do { 
echo "Process \"$cmd\" started"; 
$cmd & pid=$! 
    PID_LIST+=" $pid"; 
    } done 
    trap "kill $PID_LIST" SIGINT 
    echo "Parallel processes have started"; 
    wait $PID_LIST 
    echo 
    echo "All processes have completed"; 

您可以将其保存为filename.sh并执行。之后,你需要通过两个命令作为参数,例如我为跑:

./filename.sh "ffmpeg -i input.mp4 -s 720x480 output1.mp4" "ffmpeg -i input.mp4 -s 1170x480 output2.mp4" 

你的命令对我来说有点复杂,所以我尝试使用并行脚本运行简单的命令。