Transcode moviefile en h264 / aac avec ffmpeg pour la vidéo et neroacenc pour l’audio


0

Je suis sur Mac OS 10.8.1, avec ffmpeg-develinstallé en tant que MacPort. Je peux courir NeroAacEnc(win32) via Wine. Je peux transcoder un film en h264 / aac en utilisant une simple ffmpegcommande:

ffmpeg -i INPUT.MP4 -vcodec libx264 -acodec libfaac OUTPUT.MP4

Le problème, c'est que je préfère le son de l' NeroAACEncencodeur AAC. Transcoder un fichier audio wave au format AAC à l'aide de Nero est également simple:

wine start neroAacEnc.exe -if INPUT.wav -of OUTPUT.mp4

Comment utiliser ffmpegle codage vidéo et NeroAACEncle codage audio en une seule commande? Des pipes? Scénario? Automator? Je ne suis pas bon avec aucun de ceux-ci.

Besoin d'aide car je suis perdu. Merci d'avance.

Réponses:


1

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.exelà-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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.