web-dev-qa-db-fra.com

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 une sortie en tant que 

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?

157
user1269669

Pour extraire le flux audio sans réencodage:

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac
  • -vn n'est pas une vidéo. 
  • -acodec copy indique que vous utilisez le même flux audio que celui-ci. 

Lisez le résultat pour voir de quel codec il s'agit, afin de définir la bonne extension de nom de fichier.

299
Paul Irish

Pour encoder un MP3 de haute qualité à partir d’un fichier AVI, utilisez de préférence/q: a pour un débit binaire 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 d'encodage, par exemple de 3 minutes. et 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 , cela ira à la fin.

89
Jeremy Thompson

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

Habituellement

ffmpeg -formats

ou

ffmpeg -codecs

donnerait suffisamment d’informations pour que vous en sachiez plus.

11
Álvaro

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

10
smp

Pour encoder un fichier audio mp3 ffmpeg.org , consultez l'exemple suivant:

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

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

6
Suragch

Juste une supposition:

-ab 192

devrait être

-ab 192k

On dirait que cela pourrait poser problème, mais peut-être que ffmpeg est assez intelligent pour le corriger.

2
Chaotic

Si le son intégré à l'avi n'est pas au format MP3, vous devrez peut-être spécifier -acodec mp3 en tant que paramètre supplémentaire. Ou quel que soit votre codec mp3 (sur les systèmes Linux, il s'agit probablement de -acodec libmp3lame). Vous pouvez également obtenir le même effet, indépendant de la plate-forme, en spécifiant plutôt -f mp3 pour "forcer" le format au format MP3, bien que toutes les versions de ffmpeg ne prennent toujours pas en charge ce commutateur. Votre kilométrage peut varier.

2
Xheralt

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 fonctionnement fonctionne bien.

String[] 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 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 flux audio si codé

-ac

Définissez le nombre de canaux audio.

-b: a

Définir le débit audio

-F

format

Découvrez this pour mon exemple complet de projet Android ffmpeg sur github.

1

Voici ce que je viens d'utiliser:

ffmpeg -i input.mkv -ss 01:06:57 -to 01:21:07 -c:v copy -c:a copy output.mp4

Référence: https://www.arj.no/2018/05/18/trimvideo/

0
alper

Voici ce que je viens d'utiliser:

ffmpeg -i my.mkv -map 0:3 -vn -b:a 320k my.mp3

Explication des options: 

  • my.mkv est un fichier vidéo source, vous pouvez également utiliser d'autres formats
  • -map 0:3 signifie que je veux le 3ème flux du fichier vidéo. Mettez votre N là-bas - les fichiers vidéo ont souvent plusieurs flux audio; vous pouvez l'omettre ou utiliser -map 0:a pour prendre le flux audio par défaut. Exécutez ffprobe my.mkv pour voir quels flux le fichier vidéo contient.
  • my.mp3 est un nom de fichier audio cible et ffmpeg pense que je veux un MP3 à partir de son extension. Dans mon cas, le flux audio source est ac3 DTS et la copie n'était pas ce que je voulais
  • 320k est un débit souhaité
  • -vn signifie que je ne veux pas de vidéo dans le fichier cible
0
Artem Vasiliev

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 d'audio que contient la vidéo; exemple pour une 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 ffmpeg -i INPUT -map 0:a -c:a copy OUTPUT

J'ai utilisé -map 0:1 en cela sans problèmes, mais, comme indiqué dans un commentaire de @LordNeckbeard, "Il n'est pas garanti que le flux 0:1 soit toujours audio. Utiliser -map 0:a au lieu de -map 0:1 évitera les ambiguïtés."

0
user4098390