Sox - windows 中的管道输出

Sox - Piping output in windows

所以我正在使用 C++ 模拟 RP2A03 芯片,使用 SoX 重新采样并输出音频。

我可以通过以下命令确认 APU 本身和输入管道是否正常工作:

FILE* fp = popen(".\sox\sox.exe -t raw -c1 -e signed-integer -b 16 -r1789800 - -t wav -c2 -r 48000 wav.wav", "wb");
...
fputc(sample, fp);
fputc(sample/256, fp);

输出优美的芯片音乐 wav.wav,可在 MS 媒体播放器、VLC 等中播放。

但是当我尝试使用管道将音乐传输到 ffplay 时:

FILE* fp = popen(".\sox\sox.exe -t raw -c1 -e signed-integer -b 16 -r1789800 - -t raw -c2 -r 48000 - | .\sox\ffplay.exe -acodec pcm_s16le -", "wb");

我读到一个错误:

FAIL sox: `-' error writing output file: Invalid argument

我已经努力 google 好几个小时了,但运气不好...

我已经坚持了几个小时,实际上从昨天开始,似乎有一些关键的(或微不足道的?)我忽略了,因为我发现的所有例子都使用相同的,甚至更简单的方法, 将输出写入标准输出。

因为我实际上可以毫无问题地将它输出到 wav,所以我不禁感到有点被软件嘲笑...

如果有人有任何可能有帮助的建议,请分享!

谢谢!

我使用的是 SoX 14。0.x,降级到 13.0 立即解决了我的问题。 好像输出管道在 14 中坏了。0.x

谢谢。