ffmpeg - wie erreiche ich eine schnell-konvertierung für audio-files?

Kokujou

Lieutenant
Registriert
Dez. 2017
Beiträge
929
Hallo ihr Lieben!
In einem vorherigen Thread hat mir jemand den Tipp gegeben wie ich eine Schnell-Konvertierung mit ffmpeg erreiche, das hat mir sehr geholfen. Allerdings scheint es nur für Videos zu funktionieren, für audios sieht das nicht so schön aus.

Für Videos wäre das Kommando: "ffmpeg -i \"{videoPath}\" -c:v copy -c:a copy -movflags frag_keyframe+empty_moov -f mp4 -"

also dachte ich mir das äquivalent wäre wohl:
"ffmpeg -i \"{audioPath}\" -c:a -f mp3 -""
sollte soweit ich inzwischen die Optionen verstehe heißen: nimm audioPath als Input, kopiere den audio-stream und erzwinge dabei das mp3-Format, kopiere dabei nach stdout

leider beschwert er sich dann, dass kein output-pfad angegeben wurde. ohne das -c:a funktioniert es, aber das wäre dann eine aufwändige lang-konvertierung. Für Audio-Files ist die Laufzeit zwar noch zu nicht so problematisch aber es wäre trotzdem schön wenn ich es optimieren könnte

Danke schonmal für eure freundlichen Kommentare :)
 
Was ist das Ziel?

Einfachster Aufruf: ffmpeg -i input.mp4 output.avi

5.4 Main options | ffmpeg
-f fmt (input/output)

Force input or output file format. The format is normally auto detected for input files and guessed from the file extension for output files, so this option is not needed in most cases.
 
Zuletzt bearbeitet: (Ergänzung)
Was willst dud enn konvertieren? Wenn du -c:a copy benutzt konvertierst du eigentlich gar nichts, die Audiospur bleibt unangetastet.
 
  • Gefällt mir
Reaktionen: SpiII
Kokujou schrieb:
Schnell-Konvertierung

Kommando: "ffmpeg -i \"{videoPath}\" -c:v copy -c:a copy -movflags frag_keyframe+empty_moov -f mp4 -"
Damit konvertierst du garnichts. Damit kopierst du die Datei quasi von A nach B.


Schau dir mal "Xmedia Recode" an. Damit kann man auch viele Dateien auf einmal konvertieren.
 
Bei Videos kann man die Streams mit ffmpeg in einen anderen Container wie z.B. mp4 kopieren. Dabei findet dann keine Konvertierung von Audio oder Video statt. Bei Audio-Dateien ohne zusätzlichen Container funktioniert das so nicht.
Hauro schrieb:
Einfachster Aufruf: ffmpeg -i input.mp4 output.avi
Genau, aber in diesem Fall einfach: ffmpeg -i \"{audioPath}\" -f mp3 -""
Das verwendet vermutlich nur 128k. Wenn man bessere Qualität haben möchte, kann man zusätzlich noch -b:a 192k oder auch 320k verwenden.
 
  • Gefällt mir
Reaktionen: SpiII
Oder den guten alten Lame. Der kann im Grunde alle Formate, alle Bitraten und vor allem hohe Qualität. Dazu nutzt er jeden Core den er bekommen kann.
 
okay, sorry, da hatte ich mal wieder vergessen das eigenltiche Ziel zu beschreiben.

ich möchte audio-dateien hochkompatibel für einen web-player on-the-fly in einem C# Backend konvertieren.
Der Browser-Support ist leider für audio und video files etwas wechselhaft, darum will ich MP3 nehmen, was eigentlich fast überall unterstützt wird.

ich schicke die Files so an einen output-stream und den schicke ich von meinem backend zu meinem javascript frontend. für videos funktioniert das blendend.
 
Kokujou schrieb:
ich schicke die Files so an einen output-stream und den schicke ich von meinem backend zu meinem javascript frontend. für videos funktioniert das blendend.
Die beste Performance hat bei mir: ffmpeg -i \"{audioPath}\" -q:a 2 -f mp3 -""
Damit sollten sich mit einem Core etwa 50 bis 60 Streams in Echtzeit konvertieren lassen.
 
  • Gefällt mir
Reaktionen: Kokujou
Nachsatz: mit dem copy hat es tatsächlich schonmal etwas besser funktioniert... schön blöd von mir das zu übersehen >.>

leider hatten die anderen Kommentatoren mit ihrer Vermutung wohl auch recht. Das kopieren scheint nur bei Videos zu funktionieren. bei OGG bricht er z.B. komplett zusammen.

Nolag schrieb:
Die beste Performance hat bei mir: ffmpeg -i \"{audioPath}\" -q:a 2 -f mp3 -""
Damit sollten sich mit einem Core etwa 50 bis 60 Streams in Echtzeit konvertieren lassen.
das hat schonmal wunder gewirkt. was passiert denn da jetzt? :) nur so zum verständnis, was für eine schwarze Magie ich gerade gewirkt habe
 
Da läuft jetzt der Lame Encoder mit Qualität 2 (q:a 2) was wohl 192k VBR entspricht.
 
klingt doch gut :)
ich bin noch nicht sicher warum das -c copy nicht für audio funktioniert aber sehr gut für video.

es geht ja hier wirklich nur um den Punkt kompatibilität. Es wäre also sogar besser wenn keine tatsächliche Konvertierung durchgeführt wird sondern der Browser nur ein bischen ausgetrickst wird, aber ich stecke zu wenig in der Materie um zu wissen ob meine BItte sinnvoll ist, oder ob man in den sauren Konvertierungs-Apfel beißen muss.

performant scheint es ja zu sein, jetzt geht's eigentlich also nur noch darum ein bischen Prozessor-Power zu sparen
 
Kokujou schrieb:
ich bin noch nicht sicher warum das -c copy nicht für audio funktioniert aber sehr gut für video.
Das habe ich versucht in Post #6 zu erklären. Bei den Videos ist ja Video und Audio zusammen in einem Container verpackt. Wenn nur der Container nicht Browserkompatibel ist, kann man Audio und Video einfach in einen neuen Container kopieren und es funktioniert. Bei reinem Audio ist aber das eigentliche Format inkompatibel und muss vollständig konvertiert werden.
 
  • Gefällt mir
Reaktionen: NJay und Kokujou
verstehe, gut dann muss das eben erstmal reichen :) dankeschön!
 
Zurück
Oben