
Ich bin neu bei FFMPEG und kann hierzu nicht viel klare Dokumentation finden.
Ich verkette 3 MP3s (ich möchte nur Multiplexen, kein Kodieren/Transkodieren).
Beide Befehle scheinen einwandfrei zu funktionieren. Gibt es einen Unterschied zwischen der Verwendung von „-c“ und „-acodec“?
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -acodec copy out.mp3
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -c copy out.mp3
Ich habe stundenlang bei Google gesucht und verschiedene Dokumentationen zu ffmpeg gefunden, aber keine, die erklärt, was -c oder -acodec eigentlich machen. Ich glaube, -c steht für „Codec“ und -acodec für „Audio-Codec“?? Was macht jeder von beiden / gibt es einen Unterschied / ist einer besser?
Ich habe folgende Dokumentation gefunden, die nicht weiterhilft:
https://ffmpeg.org/ffmpeg-all.html
https://gist.github.com/tayvano/6e2d456a9897f55025e25035478a3a50
Auch alle Verbesserungsvorschläge sind herzlich willkommen (ich muss nur drei MP3s nacheinander zusammenfügen).
Danke.
Antwort1
Um auf Ihren Titel einzugehen.
Dabei -c copy
werden sowohl der Audio-Codec (Acodec) als auch der Video-Codec (Vcodec) kopiert.
-c copy
ist das gleiche wie -acodec copy -vcodec copy
-c:a copy
ist das gleiche wie -acodec copy
.
-c:v copy
ist das gleiche wie-vcodec copy
und natürlich können Sie einen Codec angeben, zB -vcodec libx264
oder-c:v libx264
Das -c steht für Codec. Alternativ können Sie auch -codec schreiben. https://ffmpeg.org/ffmpeg.html z.B -codec:a copy
-acodec copy
und wenn Sie z. B. weder oder -acodec blahblah
noch angeben -codec:a ...
, wird ein Standardcodec ausgewählt. Sie können auch angeben, -vn
dass kein Video angezeigt werden soll.https://stackoverflow.com/questions/9913032/wie-kann-ich-mit-ffmpeg-audio-aus-video-extractieren damit es kein Video kopiert oder -an
kein AudioEntfernen Sie Audio aus einer Videodatei mit FFmpeg
Hinzugefügt
Die Syntax von -acodec
und -vcodec
ist mittlerweile veraltet. Es wird empfohlen, die Syntax von -c:a
und zu verwenden -c:v
(die Aliase für -codec:a
und sind -codec:v
).
Antwort2
-c
oder -codec
ist ein allgemeiner Stream-Selektor, sodass Sie ihn verwenden können, um den Codec für alle Streams (Audio oder Video) einzustellen.
-acodec
ist eine Teilmenge dieser Funktionalität, die automatisch auf Audio-Streams beschränkt ist
-acodec:1
ist dasselbe wie -codec:a:1
und zeigt an, dass Sie den Codec für den zweiten Audiostream einstellen (der erste Audiostream ist 0).
aus Ihrer verlinkten Dokumentation: -c, -codec
-c[:stream_specifier] Codec (Eingabe/Ausgabe, pro Stream) -codec[:stream_specifier] Codec (Eingabe/Ausgabe, pro Stream)
Select an encoder (when used before an output file) or a decoder (when used before an input file) for one or more streams. codec is the
Name eines Decoders/Encoders oder eine spezielle Wertkopie (nur Ausgabe), um anzuzeigen, dass der Stream nicht erneut codiert werden soll.
-acodec
-acodec Codec (Eingabe/Ausgabe)
Legt den Audio-Codec fest. Dies ist ein Alias für -codec:a.
Es gibt auch einen -vcodec, der für Videostreams auf die gleiche Weise funktioniert.
Um das Ganze zusammenzufassen, betrachten Sie diesen Befehl aus dem Dokument
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
dies bedeutet, dass für alle Streams der Originalcodec verwendet werden soll ( -c copy
), für den zweiten Videostream jedoch libx264 ( -c:v:1 libx264
) und für den 138. Audiostream libvorbis ( -c:a:137 libvorbis
).
Mit -c
können Sie also alle Arten von Streams steuern, während -acodec
und -vcodec
lediglich Verknüpfungen für die Audio- oder Video-Teilmengen davon sind.