ffmpeg pour extraire l’audio de la vidéo

J’ai essayé la commande suivante pour extraire l’audio de la vidéo:
ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3

mais je reçois comme sortie

 libavutil 50.15. 1 / 50.15. 1 libavcodec 52.72. 2 / 52.72. 2 libavformat 52.64. 2 / 52.64. 2 libavdevice 52. 2. 0 / 52. 2. 0 libavfilter 1.19. 0 / 1.19. 0 libswscale 0.11. 0 / 0.11. 0 libpostproc 51. 2. 0 / 51. 2. 0 SamplE.avi: Invalid data found when processing input 

Quelqu’un peut-il aider s’il vous plaît?

Pour extraire le stream audio sans réencodage:

 ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac 
  • -vn n’est pas une vidéo.
  • -acodec copy dit utiliser le même stream audio déjà présent.

Lisez la sortie pour voir quel est le codec, pour définir la bonne extension de nom de fichier.

Pour encoder un MP3 de haute qualité à partir d’un fichier AVI, utilisez -q: a pour un débit binary variable.

 ffmpeg -i sample.avi -q:a 0 -map a sample.mp3 

Si vous souhaitez extraire une partie de l’audio d’une vidéo, utilisez l’option -ss pour spécifier l’horodatage de départ et l’option -t pour spécifier la durée de l’encodage, par exemple de 3 minutes à 5 secondes pendant 45 secondes.

 ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3 
  • Les horodatages doivent être au format HH: MM: SS.xxx ou en secondes.

  • Si vous ne spécifiez pas l’option -t , elle ira à la fin.


Une autre demande populaire consiste à extraire des images de vidéos, voici la commande d’images par seconde en images:

 ffmpeg.exe -i simpsonsRockBottom.mp4 -r 1/1 $filename%03d.jpg -ss 00:00:52 -t 00:01:52 

La ligne de commande est correcte et fonctionne sur un fichier vidéo valide. Je m’assurerais que vous avez installé la bonne bibliothèque pour travailler avec mp3, installez lame o probe avec un autre codec audio.

habituellement

 ffmpeg -formats 

ou

 ffmpeg -codecs 

donnerait des informations suffisantes pour que vous en sachiez plus.

ffmpeg -i sample.avi vous donnera les informations de format audio / vidéo pour votre fichier. Assurez-vous d’avoir les bibliothèques appropriées configurées pour parsingr les stream d’entrée. Assurez-vous également que le fichier n’est pas corrompu.

Pour encoder l’audio mp3, ffmpeg.org montre l’exemple suivant:

 ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3 

J’ai extrait l’audio d’une vidéo simplement en remplaçant input.wav par le nom du fichier vidéo. Le 2 signifie 190 kb / sec. Vous pouvez voir les autres niveaux de qualité sur mon lien ci-dessus.

Juste une conjecture:

 -ab 192 

devrait être

 -ab 192k 

Cela peut sembler être un problème, mais peut-être que ffmpeg est assez intelligent pour le corriger.

Si l’audio inséré dans l’avi n’est pas un format mp3 pour commencer, vous devrez peut-être spécifier -acodec mp3 comme paramètre supplémentaire. Ou quel que soit votre codec MP3 (sur les systèmes Linux, il est probablement -acodec libmp3lame ). Vous pouvez également obtenir le même effet, indépendant de la plate-forme, en spécifiant à la place -f mp3 pour “forcer” le format au format mp3, bien que toutes les versions de ffmpeg ne supportent pas toujours ce commutateur. Votre kilométrage peut varier.

Utilisez -b:a au lieu de -ab car -ab est obsolète maintenant. Assurez-vous que le chemin du fichier d’entrée est correct.

Pour extraire l’audio d’une vidéo, j’ai utilisé la commande ci-dessous et son bon fonctionnement.

 Ssortingng[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-vn", "-ar", "44100", "-ac", "2", "-b:a", "256k", "-f", "mp3", outputFileAbsolutePath}; 

Ici,

-y

Écraser les fichiers de sortie sans demander

-je

ffmpeg lit à partir d’un nombre arbitraire de «fichiers» d’entrée spécifiés par l’option -i

-vn

Désactiver l’enregistrement vidéo

-ar

définit le taux d’échantillonnage pour les stream audio si encodé

-ac

Définissez le nombre de canaux audio.

-b: a

Définir le bitrate audio

-F

format

Découvrez ceci pour mon exemple complet de projet ffmpeg android sur github.

Pour extraire sans conversion, j’utilise une entrée de menu contextuel – en tant qu’action personnalisée du gestionnaire de fichiers sous Linux – pour exécuter les opérations suivantes (après avoir vérifié le type de contenu audio de la vidéo: exemple de vidéo contenant ogg audio):

 bash -c 'ffmpeg -i "$0" -map 0:a -c:a copy "${0%%.*}".ogg' %f 

qui est basé sur la commande ffmpeg -i INPUT -map 0:a -c:a copy OUTPUT .

J’ai utilisé -map 0:1 sans problème, mais, comme indiqué dans un commentaire de @LordNeckbeard, “le stream 0:1 n’est pas garanti pour être toujours audio. Utilisation de -map 0:a au lieu de -map 0:1 évitera l’ambiguïté. “