Windows трубы в двоичном режиме - PullRequest
5 голосов
/ 28 октября 2011

Я написал программу в Windows, которая будет воспроизводить двоичное аудио, отправленное на него через стандартный ввод, я назвал ее 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, чтобы открыть волновой файл сам по себе в текстовом режиме, он будет звучать так же, как когда я делаю это через канал, если я открываю волновой файл в двоичном режиме, он воспроизводится отлично.Кто-нибудь знает, как я могу это исправить?

1 Ответ

4 голосов
/ 28 октября 2011

Если вы включите заголовочные файлы

#include <fcntl.h>
#include <io.h>

, вы можете переключать режимы с помощью

_setmode(_fileno(stdin), _O_BINARY);
...