Sox — Трубная продукция в Windows

Поэтому я эмулирую микросхему RP2A03, используя C ++, используя 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-Media Player, 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 без проблем, я не могу не чувствовать себя немного насмешливым со стороны программного обеспечения …

Если у кого-то есть предложения, которые могут помочь, то, пожалуйста, поделитесь!

Спасибо!

0

Решение

Я использовал SoX 14.0.x, и понижение до 13.0 немедленно решило мою проблему.
Похоже, что выходной трубопровод сломан в 14.0.x

Благодарю.

2

Другие решения


По вопросам рекламы [email protected]