Linux では次のように実行できます。
(bash)
ffmpeg -i foo.mp3 -f wav - | opusenc --bitrate 64 - bar.opus
これは便利です。なぜなら、WAV データを Opus に渡す前にディスクに書き込む必要がなくなり、代わりにメモリ内でオンザフライでエンコードが行われるからです。
私は両方を Windows にインストールしておりffmpeg
、opusenc
Powershell にはパイプがあるので、同様のことができると期待していたので、これを試しています。
(PS)
> ffmpeg -y -i .\foo.mp3 -f wav - | .\opusenc.exe --bitrate 64 - bar.opus
私が期待していること: ffmpeg はエンコードのために wav オーディオを opusenc に直接パイプするはずです
代わりに何が起こるか:それはのみデータを opusenc に渡さずに ffmpeg を実行します。これは、PS プロセスの RAM が一定に増加し、opusenc からの出力がないことによって示されます。
答え1
Powershell の代わりに通常のものを使用してくださいcmd.exe
。まったく同じコマンドが cmd では機能しますが、PS では機能しません。
> ffmpeg -y -i .\foo.mp3 -f wav - | .\opusenc.exe --bitrate 64 - bar.opus