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?
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.
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.
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.
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.
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.
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.
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.
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.
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/
Voici ce que je viens d'utiliser:
ffmpeg -i my.mkv -map 0:3 -vn -b:a 320k my.mp3
Explication des options:
-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.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."