我在Windows中编写了一个程序,它将播放通过stdin发送给它的二进制音频,我称之为aplay(就像linux程序一样)。然后我写了一个单独的程序如下
FILE * f = popen("aplay.exe", "wb");
FILE * song = fopen("C:/Users/Ray/Dropbox/DJ Automica 2/Debug/raymonster 5.wav", "rb");
while(1)
{
byte buff[4096];
fread(buff, 4, 1024, song);
fwrite(buff, 4, 1024, f);
}
由于某种原因,管道似乎没有在二进制模式下工作,因为音频全部搞砸了。如果我改变我的aplay以在文本模式下单独打开wave文件,它听起来就像我通过管道一样,如果我以二进制模式打开波形文件它会完美播放。有谁知道我怎么解决这个问题?
答案 0 :(得分:4)
如果包含头文件
#include <fcntl.h>
#include <io.h>
您可以使用
切换模式_setmode(_fileno(stdin), _O_BINARY);