1 votes

Conversion par lots de MP4 avec ffmpeg

J'ai tout un tas de fichiers texte, jpg et mp4 dans un dossier. Je veux que les fichiers jpg et texte soient laissés seuls. Je veux compresser tous les mp4 en utilisant les fonctions de ffmpeg. -crf avec une valeur de 23 pour économiser de l'espace disque. Les fichiers doivent être écrasés à leur place.

J'ai utilisé la réponse de @llogan aquí et a remplacé .avi con .mp4 mais cela ne fonctionne pas.

for f in *.mp4; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium \
  -c:a aac -b:a 128k -movflags +faststart -vf scale=-2:720,format=yuv420p \
  "encoded/${f%.avi}.mp4"; done

Quel serait le rôle de l for est de convertir le mp4 en une qualité inférieure ( -crf 23 ), sans supprimer et/ou modifier d'autres fichiers dans le même répertoire de travail ? Je ne veux pas vraiment les autres drapeaux non plus, parce que je ne ferai pas de redimensionnement, de téléchargement vers youtube, de changement de vitesse d'encodage, etc.

2voto

Robert Gilliam Points 21

Vous aviez juste besoin de changer "encoded/${f%.avi}.mp4" a "encoded/${f%.mp4}.mp4" o "encoded/${f%.*}.mp4" :

mkdir encoded
for f in *.mp4; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a copy -movflags +faststart "encoded/${f%.*}.mp4"; done

J'ai supprimé tous les autres éléments dont vous n'aviez pas besoin. J'ai supposé que votre audio d'entrée est déjà AAC, donc j'ai utilisé -c:a copy pour permettre copie de flux qui est une sorte de copier-coller.

-crf 23 -preset medium sont les valeurs par défaut, vous pouvez donc les supprimer si elles vous conviennent. Sinon, voir FFmpeg Wiki : H.264 pour obtenir des conseils sur ce que -crf y -preset à utiliser.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X