Sous Linux, je peux utiliser un tuyau pour créer un M4A avec neroAacEnc comme si
ffmpeg -i input.mp4 -vn -f wav - | neroAacEnc -if - -ignorelength -q 0.5 -of output.m4a
Vous devriez utiliser wine neroAacEnc.exe
là-bas, et je ne sais pas si la version Windows sous Wine peut utiliser des pipes. En théorie , les éléments suivants devraient pouvoir tout faire en une seule commande (en supposant que vous disposiez d'un ffmpeg à jour):
ffmpeg -i input.mp4 -vn -f wav - | neroAacEnc -if - -ignorelength -q 0.5 -of - | ffmpeg -i - -i input.mp4 -map 1:v -map 0:a -c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4
Mais malheureusement, neroAacEnc semble être capable de prendre un tuyau en entrée ou en sortie sur un tuyau, mais pas les deux à la fois. Par conséquent, la procédure ci-dessus ne fonctionnera pas et vous devez le faire avec deux commandes:
ffmpeg -i input.mp4 -vn -f wav - | neroAacEnc -if - -ignorelength -q 0.5 -of temp-audio.m4a
ffmpeg -i input.mp4 -i temp-audio.m4a -map 0:v -map 1:a -c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4
Je peux mettre cela dans un script bash basique (qui AFAIK devrait fonctionner sur OSX)
#!/bin/bash
ffmpeg -i "$1" -vn -f wav - | neroAacEnc -if - -ignorelength -q 0.5 -of "temp.${1%.*}.m4a"
ffmpeg -i "$1" -i "temp.${1%.*}.m4a" -map 0:v -map 1:a -c:a copy -c:v libx264 -crf 22 -preset veryfast "output.${1%.*}.m4v"
rm "temp.${1%.*}.m4a
exit 0
Enregistrez-le quelque part dans votre $ PATH en tant que convert-to-M4V et marquez-le comme exécutable, utilisez-le comme ceci:
convert-to-M4V input.mov
Pour faire tous les mov dans un répertoire:
for f in *.mov; do convert-to-M4V "$f"; done
REMARQUE: je ne suis pas sous OSX et je n'ai jamais vraiment utilisé la ligne de commande sous OSX. Par conséquent, certaines de ces opérations pourraient ne pas fonctionner / nécessiter une adaptation. roAA EDIT: Puisque vous êtes sur OSX, vous devriez pouvoir utiliser l’encodeur (supérieur à neroAacEnc dans certains tests) Quicktime AAC, qaac, qui pourrait bien mieux prendre en charge les tuyaux. Et c'est une solution native.
NOTA: Vous pouvez également trouver utile ce guide d’encodage avec x264 sur ffmpeg et ce guide de neroAacEnc.