Der Befehl ffmpeg konvertiert einen Teil einer Videodatei in eine Audiodatei

Der Befehl ffmpeg konvertiert einen Teil einer Videodatei in eine Audiodatei

Ich habe eine Videodatei (Dauer 1 Stunde). Ich muss einen beliebigen Teil der Videodatei (30 Minuten) in eine Audiodatei umwandeln.

ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vcodec copy -acodec copy /opt/b.mp4

dann habe ich verwendet

ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -acodec copy /opt/b.mp4

Aber ich kann mir trotzdem das Video zusammen mit dem Audio ansehen. Ich brauche nur Audiodateien

Antwort1

Wenn Sie nur Audio benötigen (ich hoffe, ich habe das richtig verstanden), brauchen Sie den ersten Schritt überhaupt nicht. Wenn Sie Folgendes verwenden:

ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vn -acodec copy /opt/b.mp3

es wird es tunbereitgestelltDer ursprüngliche Audio-Codec war MP3. Wenn nicht, können Sie trotzdem eine Neucodierung erzwingen:

ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vn -acodec libmp3lame ...other_parameters.. /opt/b.mp3

Es other_parameterswird Bitraten usw. geben.

Antwort2

Es gibt zwei Hauptmethoden, um nur das Video oder Audio aus einer Datei zu erhalten, die beides enthält. Standardmäßig ist dieStreamauswahlDas Verhalten in ffmpeg wählt einen Stream pro Streamtyp aus. Beachten Sie, dass Eingaben mehrere Streamtypen enthalten können: Video, Audio, Untertitel und Daten. Einige Eingaben können sogar mehrere dieser Streamtypen enthalten, z. B. zwei Videostreams.


-vnoder-an

-vnDiese Optionen weisen ffmpeg an, das Video ( ) oder das Audio ( ) wegzulassen -an.

So lassen Sie das Video weg und kopieren das Audio:

ffmpeg -i input -vn -codec:a copy output.mka

So lassen Sie den Ton weg und kopieren das Video:

ffmpeg -i input -an -codec:v copy output.mkv
  • Diese Beispiele werdenStreamkopieder gewünschte Stream. Das bedeutet, dass ffmpeg ihn einfach neu muxt, anstatt ihn neu zu kodieren. Das geht sehr schnell und da es sich im Wesentlichen um „Kopieren und Einfügen“ handelt, hat es keinen Einfluss auf die Qualität.

  • Durch die Verwendung von -vnund -anwerden andere eventuell vorhandene Streams, wie etwa Untertitel- oder Datenstreams, nicht ausgelassen. Bei Nur-Audio-Formaten werden diese jedoch ohnehin ignoriert.


-map

Der-mapOption mag komplizierter erscheinen, ist aber flexibler und nützlicher. Beispielsweise -vnweist ffmpeg an, nur die Videostreams wegzulassen, aber durch Verwendung einesStream-Spezifizierer -mapkann ffmpeg anweisen, alles außer dem gewünschten Stream wegzulassen.

So kopieren Sie nur das Video:

ffmpeg -i input -map 0:v -codec copy output.mkv

So kopieren Sie nur das Audio:

ffmpeg -i input -map 0:a -codec copy output.mka
  • Dies ist ein Stream-Spezifizierer, der ffmpeg anweist, nur die Videostreams 0:vaus dem ersten Input einzuschließen . Dies kann weiter erweitert werden. Die Verwendung von bedeutet und wäre nützlich, wenn Ihr Input mehrere Videostreams enthält und Sie nur den ersten möchten. Sehen Sie sich die Konsolenausgabe von ffmpeg an, um die Reihenfolge der Streams in Ihrem Input herauszufinden.0v0:v:0first input:video:first video stream

  • Sie können auch negative Zuordnungen verwenden. Die Verwendung von -map 0 -map -0:a:1würde alle Streams außer dem zweiten Audiostream zuordnen. weist ffmpeg an, alle Streams vom Input (dem ersten Input) -map 0einzuschließen , und weist ffmpeg dann an, den ersten Audiostream vom ersten Input zu ignorieren.0-map -0:a:1

Antwort3

Der erste Teil ist richtig. Im zweiten Teil wird nur Audio für die b.mp4-Datei extrahiert.

ffmpeg -i b.mp4 -vn -acodec copy audio_b.mp3

verwandte Informationen