Ich habe den folgenden Befehl versucht, um Audio aus Video zu extrahieren:
ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3
aber ich bekomme 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 bitte jemand helfen?
Um eine hochwertige MP3- Datei von einem AVI zu codieren, verwenden Sie am besten -q: a für variable Bitrate:
Wenn Sie einen Teil des Audios aus einem Video extrahieren möchten, geben Sie mit der Option -ss den Startzeitstempel und mit der Option -t die Codierungsdauer an, z. B. zwischen 3 Minuten und 5 Sekunden für 45 Sekunden:
Die Zeitstempel müssen im Format HH: MM: SS.xxx oder in Sekunden vorliegen.
Wenn Sie die Option -t nicht angeben , wird sie beendet.
Arbeitsbeispiel:
quelle
-q:a
Werte: trac.ffmpeg.org/wiki/Encode/MP3 Null ist die VBR-Einstellung mit der höchsten Qualität, die normalerweise zu durchschnittlichen Bitraten im oberen Teil des normalen CBR-Bereichs führt (wobei 320 kbit / s die sind maximal, wahrscheinlich etwas jenseits des Punktes, an dem verlustfreie Komprimierung angemessener wird).-map a
das?-vn
nicht funktioniert.Die Befehlszeile ist korrekt und arbeitet 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.
Normalerweise
oder
würde genügend Informationen geben, damit Sie mehr wissen.
quelle
ffmpeg -i sample.avi
gibt Ihnen die Audio- / Videoformatinformationen für Ihre Datei. Stellen Sie sicher, dass Sie die richtigen Bibliotheken konfiguriert haben, um die Eingabestreams zu analysieren. Stellen Sie außerdem sicher, dass die Datei nicht beschädigt ist.quelle
Um MP3-Audio zu codieren, zeigt ffmpeg.org das folgende Beispiel:
Ich habe das Audio aus einem Video extrahiert, indem ich es durch
input.wav
den Dateinamen des Videos ersetzt habe. Das2
bedeutet 190 kb / s. Sie können die anderen Qualitätsstufen unter meinem Link oben sehen.quelle
Folgendes habe ich gerade verwendet:
Erklärung der Optionen:
-map 0:3
bedeutet, ich möchte den 3. Stream von der Videodatei. Platzieren Sie Ihr N dort - Videodateien haben oft mehrere Audio-Streams; Sie können es weglassen oder verwenden-map 0:a
, um den Standard-Audiostream zu verwenden. Laufffprobe my.mkv
zu sehen, welche Streams die Videodatei enthält.quelle
Nur eine Vermutung:
sollte sein
Das scheint ein Problem zu sein, aber vielleicht ist ffmpeg klug genug, um es zu korrigieren.
quelle
Wenn das in das AVI eingewickelte Audio zunächst kein MP3-Format hat, müssen Sie möglicherweise
-acodec mp3
einen zusätzlichen Parameter angeben . 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 angeben-f mp3
, dass das Format auf mp3 "erzwungen" werden soll, obwohl nicht alle Versionen von ffmpeg diesen Schalter weiterhin unterstützen. Ihr Kilometerstand kann variieren.quelle
Zum Extrahieren ohne Konvertierung 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 enthält):welches auf dem Befehl ffmpeg basiert
ffmpeg -i INPUT -map 0:a -c:a copy OUTPUT
.Ich habe
-map 0:1
das ohne Probleme verwendet, aber wie in einem Kommentar von @LordNeckbeard gesagt: "Es ist nicht garantiert, dass Stream immer Audio ist. Durch Verwenden von statt wird Mehrdeutigkeit vermieden ."0:1
-map 0:a
-map 0:1
quelle
0:1
ist nicht garantiert, dass Stream immer Audio ist. Wenn Sie-map 0:a
anstelle von verwenden,-map 0:1
werden Mehrdeutigkeiten vermieden.mediainfo
die Audiospur bestimmt und sie so gewählt:-map 0:a:1
wobei a: 1 der zweite Audiospurindex ist, danke!-c:a copy
machte es viel schneller!Für Leute, die nach der einfacheren Möglichkeit suchen, Audio aus einer Videodatei zu extrahieren, während die Parameter der ursprünglichen Videodatei beibehalten werden, können Sie Folgendes verwenden:
Zum Beispiel:
extrahiert eine
mp3
Audiodatei aus einermov
Videodatei.quelle
Verwenden Sie
-b:a
anstelle von-ab
als-ab
sicher, dass der Pfad Ihrer Eingabedatei korrekt ist, jetzt veraltet zu verwenden.Um Audio aus einem Video zu extrahieren, habe ich den folgenden Befehl verwendet und es funktioniert einwandfrei.
Hier,
-y
- Überschreiben Sie Ausgabedateien ohne zu fragen.-i
- FFmpeg liest aus einer beliebigen Anzahl von Eingabedateien, die durch die-i
Option angegeben werden-vn
- Deaktivieren Sie die Videoaufnahme-ar
- Legt die Abtastrate für Audiostreams fest, wenn diese codiert sind-ac
- Stellen Sie die Anzahl der Audiokanäle ein.-b:a
- Stellen Sie die Audio-Bitrate ein-f
- FormatSchauen Sie sich dies für mein komplettes Beispiel-FFmpeg-Android-Projekt auf GitHub an.
quelle