在 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 进行编码
实际情况是:仅有的运行 ffmpeg 而不将数据传递给 opusenc,这由 PS 进程的 RAM 不断增长和 opusenc 没有输出来表明。
答案1
使用常规命令cmd.exe
而不是 Powershell。 完全相同的命令在 cmd 中有效,但在 PS 中无效:
> ffmpeg -y -i .\foo.mp3 -f wav - | .\opusenc.exe --bitrate 64 - bar.opus