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
谢谢。
所以我正在使用 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
谢谢。