Playsound пропускает первые полсекунды файла, если не работает программа музыкального проигрывателя

0

У меня есть очень короткие (<1-2 секунды) WAV файлы, которые не надежно воспроизводятся. На быстрой машине Windows 8 они никогда не проигрывают, если какой-то аудиоплеер (Windows Media Player, iTunes) не работает и играет что-то (что-то), а затем они играют каждый раз.

У меня есть другие (также короткие) WAV файлы, которые играют каждый раз. От одного и того же звонка. Все они находятся в каталоге программы.

Когда они не играют, Playsound по-прежнему возвращает true. Вот вызов win32 C++:

    Playsound( L"mfile.wav", NULL, SND_ASYNC | SND_FILENAME );

Похоже, что этот тестовый компьютер (и, предположительно, другие системы Windows 8) имеет некоторую оптимизацию, которая требует времени, чтобы "разогреть" звуковую систему. Даже если я попрошу Windows Media Player воспроизвести один из файлов, звук не появится... в первый раз. Но когда я нажимаю игру с этого момента, он играет отлично каждый раз. iTunes занимает много времени, чтобы принять решение о воспроизведении файла, а затем он всегда работает. Включение/выключение звука с помощью панели управления не влияет.

Есть идеи? Есть ли что-то, что я могу сделать, чтобы "активировать" звуковую систему, как это делают медиа-плееры тезисов? Потому что мой звук не будет воспроизводиться в первый раз или когда-либо, если только одна из этих других программ не работает.

Теги:
audio
winapi

1 ответ

0
Лучший ответ

Для потомков я хочу отметить здесь "решение" и некоторые важные факты.

Как Playsound, так и mcisendstring пострадали от этого отказа от воспроизведения некоторых коротких файлов в конкретной системе. Я подозреваю, что причиной является карта/драйвер NVIDIA, потому что другая система Windows 8 не проявила эту проблему.

Третья попытка была очарованием, и когда я реализовал вызов через DirectShow, он работал надежно. Фактически, просто открыть соединение DirectShow было достаточно, чтобы mcisendstring могла работать сама по себе (это должно быть, почему звонки работали, когда WMP или iTunes также работали в системе). Слишком плохо DirectShow (как и почти все остальное) был заменен Microsoft Media Foundation, но это было слишком сложно для простого воспроизведения короткого wav файла.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню