GNU/Linux >> LINUX-Kenntnisse >  >> Linux

FFmpeg kopiert nicht alle Audiostreams

FFmpeg hat die Option, alle Streams der Ausgabe zuzuordnen, Sie müssen die Option -map 0 verwenden um alle Streams vom Eingang zum Ausgang abzubilden.

In voller Zeile könnte es so aussehen:

ffmpeg -i in.mp4 -c copy -map 0 out.mp4

Weitere Informationen finden Sie in der Dokumentation zur Stream-Auswahl und im -map Option.


Anscheinend ist dies eine beliebte Frage, daher poste ich meine Lösung als Antwort (war zuvor eine Kommentarantwort), damit andere sie sehen können.

Ich habe es geschafft, die richtige Syntax aus diesem Ticket zu finden. Die korrekte Syntax lautet:

ffmpeg -i in.mp4 -vcodec copy -c:a copy -map 0:0 -map 0:1 -map 0:2 out.mp4

Dadurch werden alle 3 Streams kopiert.


OK, ich habe ziemlich tief in die ffmpeg hineingelesen Manpage und fand dies, was nützlich sein sollte:

Beachten Sie, dass derzeit jeder Ausgangsstrom nur Kanäle aus einem einzigen Eingangsstrom enthalten kann; Sie können beispielsweise nicht "-map_channel" verwenden, um mehrere Eingangsaudiokanäle auszuwählen, die in verschiedenen Streams (aus denselben oder verschiedenen Dateien) enthalten sind, und sie zu einem einzigen Ausgangsstream zusammenzuführen. Daher ist es z. B. derzeit nicht möglich, zwei getrennte Mono-Streams in einen einzigen Stereo-Stream umzuwandeln. Es ist jedoch möglich, einen Stereo-Stream in zwei Einkanal-Mono-Streams aufzuteilen.

Wenn Sie diese Funktion benötigen, besteht eine mögliche Problemumgehung darin, den Amergefilter zu verwenden. Wenn Sie beispielsweise ein Medium (hier input.mkv) mit 2 Mono-Audiostreams zu einem einzigen Stereokanal-Audiostream zusammenführen müssen (und den Videostream behalten), können Sie den folgenden Befehl verwenden:

ffmpeg -i input.mkv -filter_complex "[0:1] [0:2] amerge" -c:a pcm_s16le -c:v copy output.mkv

Vielleicht möchten Sie die Manpage-Anweisungen zu man ffmpeg-filters durchlesen und damit experimentieren um zu verstehen, auf welches Maß an Komplexität Sie beim Benennen von Kanälen und der erwarteten Ausgabe geraten.

[Bearbeiten:Wie Mulvya bemerkte, beantwortet dies eine Frage, aber es war nicht ganz die Frage des ursprünglichen Posters.]


Linux
  1. Wie finde ich alle Dateien, die keine Textzeichenfolge enthalten?

  2. Linux – Warum behält Rsync unter Linux nicht alle Zeitstempel (Erstellungszeit) bei?

  3. CPU ist kostenlos, aber Bash-Skript nutzt nicht alle CPU-Ressourcen?

  4. SMPlayer – Ein kostenloser Mediaplayer für alle Formate

  5. Warum ist Bash überall (in den meisten, wenn nicht allen Linux-Distributionen)?

Wie man FFMpeg verwendet, um eine einfache Audiokonvertierung durchzuführen

Linux-Audio - nur Lautsprecher oder Mikrofon verfügbar, nicht beides

Die nützlichsten FFmpeg-Befehle für die Audio- und Videokonvertierung

sox:Befehl nicht gefunden

Wie nimmt man Audio mit ffmpeg unter Linux auf?

Gründe dafür, dass rsync NICHT alle Dateien überträgt?