2016-07-06 1 views
1

Lorsque l'utilisateur télécharge une vidéo, je fais ses 2 tailles. Un peu plus tôt, je faisais cela en deux étapes comme suitredimensionner une vidéo en 2 tailles en une seule commande

Première Taille:

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 

Deuxième Taille:

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 

Mais maintenant, pour réduire le temps de traitement, je veux combiner ces 2 étapes en une. J'ai lu https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs et faire la commande suivante

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 

Mais il donne l'erreur suivante

[NULL @ 0xaee5440] Impossible de trouver un format de sortie approprié pour '-filter: v' -filter: v: Argument invalide

alors peut-on me suggérer comment je peux le résoudre?

+0

essayez d'enlever -filter: v drapeau et commande de réexécution. – arshpreet

+0

déjà essayé, mais n'a pas fonctionné – Jass

Répondre

0

J'ai essayé d'exécuter les deux commandes en utilisant le script suivant:

#!/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"; 

Vous pouvez l'enregistrer comme filename.sh et rendre exécutables. après que vous avez besoin de passer deux commandes plus comme arguments, par exemple je courais comme:

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

Votre commande était un peu compliqué pour moi alors j'essaie d'exécuter des commandes simples en utilisant un script parallèle.