所以我使用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上努力工作几个小时没有运气......
我已经被困在这几个小时了,因为昨天实际上,似乎有一些关键的(或微不足道的?)我忽略了,因为我发现的所有例子都使用相同的,甚至更简单的方法,将输出写入stdout。
因为我实际上可以将它输出到wav而没有任何问题,所以我无法帮助但感觉有点被软件嘲笑...
如果有人有任何可能有用的建议,那么请分享!
谢谢!