Unter Linux können Sie etwa Folgendes tun:
(bash)
ffmpeg -i foo.mp3 -f wav - | opusenc --bitrate 64 - bar.opus
Das ist praktisch, weil es bedeutet, dass Sie die WAV-Daten nicht auf die Festplatte schreiben müssen, bevor Sie sie an Opus weitergeben, sodass die Kodierung stattdessen direkt im Speicher erfolgt.
Ich habe beides ffmpeg
und opusenc
es ist unter Windows installiert. Da Powershell über Pipes verfügt, habe ich erwartet, dass ich etwas Ähnliches tun kann. Deshalb versuche ich Folgendes:
(PS)
> ffmpeg -y -i .\foo.mp3 -f wav - | .\opusenc.exe --bitrate 64 - bar.opus
Was ich erwarte: ffmpeg sollte WAV-Audio direkt an opusenc zur Kodierung weiterleiten
Was stattdessen geschieht: Es scheintnurFühren Sie ffmpeg aus, ohne die Daten an opusenc weiterzugeben. Dies wird durch ein konstantes RAM-Wachstum des PS-Prozesses und keine Ausgabe von opusenc angezeigt.
Antwort1
Verwenden Sie die normale cmd.exe
statt der Powershell. Derselbe Befehl funktioniert in cmd, aber nicht in PS:
> ffmpeg -y -i .\foo.mp3 -f wav - | .\opusenc.exe --bitrate 64 - bar.opus