如何在 Windows 上透過管道將 ffmpeg 傳輸到 opusenc?

如何在 Windows 上透過管道將 ffmpeg 傳輸到 opusenc?

在 Linux 上你可以這樣做:

(bash)
ffmpeg -i foo.mp3 -f wav - | opusenc --bitrate 64 - bar.opus

這很巧妙,因為這意味著您不必在將 WAV 資料傳遞給 opus 之前將其寫入磁碟,因此編碼會在記憶體中動態進行。

我在 Windows 上安裝了兩者ffmpegopusenc並且由於 Powershell 有管道,我希望能夠做類似的事情,所以我正在嘗試這樣做:

(PS)
> ffmpeg -y -i .\foo.mp3 -f wav - | .\opusenc.exe --bitrate 64 - bar.opus

我期望發生什麼:ffmpeg 應該將 wav 音訊直接傳輸到 opusenc 進行編碼

相反會發生什麼:似乎僅有的運行 ffmpeg 而不將資料傳遞給 opusenc,這由 PS 進程的 RAM 不斷增長且 opusenc 沒有輸出表明。

答案1

使用常規cmd.exe而不是 Powershell。完全相同的命令在 cmd 中有效,但在 PS 中無效:

> ffmpeg -y -i .\foo.mp3 -f wav - | .\opusenc.exe --bitrate 64 - bar.opus

相關內容