688 Stimmen

Wie kann ich mit ffmpeg Audio aus Videos 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 erhalte die folgende Ausgabe

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 mir jemand helfen, bitte?

2voto

Android Developer Punkte 7801

Utilisez -b:a anstelle von -ab como -ab ist jetzt veraltet, stellen Sie außerdem sicher, dass der Pfad zu Ihrer Eingabedatei korrekt ist.

Um Audio aus einem Video zu extrahieren, habe ich den unten stehenden Befehl verwendet und es funktioniert gut.

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

Hier,

  • -y - Überschreiben von Ausgabedateien ohne Nachfrage.
  • -i - FFmpeg liest aus einer beliebigen Anzahl von Eingabe-"Dateien", die durch die Option -i Option
  • -vn - Videoaufzeichnung deaktivieren
  • -ar - legt die Abtastrate für kodierte Audioströme fest
  • -ac - Legen Sie die Anzahl der Audiokanäle fest.
  • -b:a - Einstellen der Audio-Bitrate
  • -f - Format

Überprüfen Sie este für mein komplettes FFmpeg Android Projekt auf GitHub.

1voto

Xheralt Punkte 29

Wenn das in die Avi-Datei eingepackte Audio nicht von vornherein im mp3-Format vorliegt, müssen Sie möglicherweise Folgendes angeben -acodec mp3 als zusätzlichen Parameter. Oder was auch immer Ihr mp3-Codec ist (auf Linux-Systemen ist es wahrscheinlich -acodec libmp3lame ). Sie können den gleichen Effekt auch plattformunabhängig erzielen, indem Sie stattdessen Folgendes angeben -f mp3 um das Format mp3 zu "erzwingen", obwohl nicht alle Versionen von ffmpeg diesen Schalter noch unterstützen. Ihr Geschmack kann variieren.

1voto

Um ohne Konvertierung zu extrahieren, verwende ich einen Kontextmenüeintrag - als benutzerdefinierte Aktion des Dateimanagers unter Linux - um Folgendes auszuführen (nachdem ich überprüft habe, welchen Audiotyp das Video enthält; Beispiel für ein Video, das ogg Audio):

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

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

Ich habe verwendet -map 0:1 in dem ohne Probleme, aber, wie in einem Kommentar von @LordNeckbeard gesagt, "Strom 0:1 ist nicht garantiert, dass es immer Audio ist. Verwendung von -map 0:a anstelle von -map 0:1 Mehrdeutigkeit zu vermeiden".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X