it-swarm.com.de

ffmpeg, um Audio aus Video zu extrahieren

Ich habe den folgenden Befehl ausprobiert, um Audio aus Video zu extrahieren:
ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3

aber ich bekomme die Ausgabe als 

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

Kann jemand bitte helfen?

157
user1269669

So extrahieren Sie den Audiostream ohne erneute Codierung:

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac
  • -vn ist kein Video. 
  • -acodec copy sagt, dass derselbe Audiostrom verwendet wird, der bereits vorhanden ist. 

Lesen Sie die Ausgabe, um zu sehen, um welchen Codec es sich handelt, um die richtige Dateinamenerweiterung festzulegen.

299
Paul Irish

Um eine qualitativ hochwertige MP3-Datei aus einem AVI-Format zu kodieren, verwenden Sie am besten -q: a für variable Bitrate:

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

Wenn Sie einen Teil des Audiomaterials aus einem Video extrahieren möchten, verwenden Sie die Option -ss, um den Startzeitstempel anzugeben, und die Option -t, um die Kodierungsdauer anzugeben, z und 5 Sekunden für 45 Sekunden:

ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3
  • Die Zeitstempel müssen im Format HH: MM: SS.xxx oder in Sekunden sein. 

  • Wenn Sie die Option -t nicht angeben, wird das Ende erreicht.

89
Jeremy Thompson

Die Befehlszeile ist korrekt und funktioniert mit einer gültigen Videodatei. Ich würde sicherstellen, dass Sie die richtige Bibliothek installiert haben, um mit mp3 zu arbeiten, lame o probe mit einem anderen Audio-Codec installieren.

Meistens

ffmpeg -formats

oder

ffmpeg -codecs

würde ausreichend Informationen geben, damit Sie mehr wissen.

11
Álvaro

ffmpeg -i sample.avi gibt Ihnen die Informationen zum Audio-/Videoformat Ihrer Datei. Stellen Sie sicher, dass Sie die richtigen Bibliotheken zum Parsen der Eingabestreams konfiguriert haben. Stellen Sie außerdem sicher, dass die Datei nicht beschädigt ist. 

10
smp

MP3-Audio zu kodieren ffmpeg.org zeigt folgendes Beispiel:

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

Ich habe das Audio aus einem Video extrahiert, indem ich input.wav durch den Dateinamen des Videos ersetzt habe. Der 2 bedeutet 190 kb/sec. Die anderen Qualitätsstufen finden Sie unter meinem Link oben.

6
Suragch

Nur eine Vermutung:

-ab 192

sollte sein

-ab 192k

Anscheinend könnte das ein Problem sein, aber vielleicht ist ffmpeg klug genug, es zu korrigieren.

2
Chaotic

Wenn das in das avi eingebundene Audio zu Beginn nicht im MP3-Format vorliegt, müssen Sie möglicherweise -acodec mp3 als zusätzlichen Parameter angeben. Oder was auch immer Ihr MP3-Codec ist (auf Linux-Systemen ist es wahrscheinlich -acodec libmp3lame). Sie können auch den gleichen Effekt erhalten, plattformunabhängig, indem Sie stattdessen -f mp3 angeben, um das Format in mp3 zu "erzwingen", obwohl nicht alle Versionen von ffmpeg diese Option unterstützen. Ihr Kilometerstand kann variieren.

2
Xheralt

Verwenden Sie -b:a anstelle von -ab, da -ab jetzt veraltet ist. Stellen Sie sicher, dass der Pfad der Eingabedatei korrekt ist.

Um Audio aus einem Video zu extrahieren, habe ich den folgenden Befehl verwendet und funktioniert einwandfrei.

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

Hier,

-y

Überschreiben Sie die Ausgabedateien ohne zu fragen.

-ich

ffmpeg liest aus einer beliebigen Anzahl von Eingabedateien, die mit der Option -i angegeben werden

-vn

Videoaufnahme deaktivieren

-ar

legt die Abtastrate für Audioströme fest, falls diese kodiert ist

-ac

Stellen Sie die Anzahl der Audiokanäle ein.

-b: a

Stellen Sie die Audio-Bitrate ein

-f

format

Check out this für mein komplettes Beispiel-ffmpeg-Android-Projekt auf github.

1

Folgendes habe ich gerade verwendet:

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

Referenz: https://www.arj.no/2018/05/18/trimvideo/

0
alper

Folgendes habe ich gerade benutzt:

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

Erklärung der Optionen: 

  • my.mkv ist eine Quellvideodatei. Sie können auch andere Formate verwenden
  • -map 0:3 bedeutet, dass ich den dritten Stream von der Videodatei haben möchte. Platzieren Sie Ihr N dort - Videodateien haben oft mehrere Audioströme; Sie können ihn weglassen oder -map 0:a verwenden, um den Standard-Audiostream zu übernehmen. Führen Sie ffprobe my.mkv aus, um zu sehen, welche Streams die Videodatei hat.
  • my.mp3 ist ein Ziel-Audiodateiname, und ffmpeg stellt fest, dass ich eine MP3-Erweiterung von seiner Erweiterung haben möchte. In meinem Fall ist der Quell-Audiostrom ac3 DTS und nur das Kopieren war nicht das, was ich wollte
  • 320k ist eine gewünschte Zielbitrate
  • -vn bedeutet, dass ich kein Video in der Zieldatei haben möchte
0
Artem Vasiliev

Um ohne Konvertierung zu extrahieren, verwende ich einen Kontextmenüeintrag - als benutzerdefinierte Dateimanager-Aktion in Linux -, um Folgendes auszuführen (nachdem geprüft wurde, welchen Audiotyp das Video enthält; Beispiel für ein Video, das ogg audio enthält):

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

die auf dem ffmpeg-Befehl ffmpeg -i INPUT -map 0:a -c:a copy OUTPUT basiert. 

Ich habe -map 0:1 dabei ohne Probleme verwendet, aber, wie in einem Kommentar von @LordNeckbeard gesagt, ist "Stream 0:1 nicht garantiert immer Audio. Mit -map 0:a anstelle von -map 0:1 werden Mehrdeutigkeiten vermieden."

0
user4098390