Я использую MCI, чтобы сделать что-то связанное со звуком, и все работает, кроме того, что я не могу изменить громкость. У меня есть следующий код:
mciSendStringA("open res/theme.wav type waveaudio alias maintheme", nullptr, 0, nullptr);
MCIERROR error = mciSendStringA("setaudio maintheme volume to 50", nullptr, 0, nullptr);
error
261. Программа работает нормально, но громкость не меняется. Любые предложения о том, что не так? (Две страницы поиска в гугле и ничего нет)
Согласно документации:
Команда setaudio устанавливает значения, связанные с воспроизведением и захватом звука. Устройства цифрового видео и видеомагнитофона распознают эту команду.
…
lpszAudio
Флаг для воспроизведения и захвата аудио. В следующей таблице перечислены типы устройств, которые распознают команду setaudio и флаги, используемые каждым типом.digitalvideo
Видеомагнитофон
Ваше воспроизведение аудио использует waveaudio устройство, которое не поддерживает setaudio
команда.
Чтобы установить громкость воспроизведения звука, вам нужно будет переключиться на WaveOut API для воспроизведения, то вы можете использовать waveOutSetVolume()
.
Error 261
в соответствии с эти коды ошибок MCIERR_UNRECOGNIZED_COMMAND
ошибка. Сама ошибка довольно очевидна: вы отправляете нераспознанную команду.
На самом деле это не решение, а просто обходной путь. Он отлично работает, если вы используете mp3-файлы. Чтобы загрузить mp3-файл:
mciSendStringA("open [file].mp3 type mpegvideo alias [soundalias]", nullptr, 0, nullptr);
Инструкция setaudio будет работать. Тем не менее, я не знаю, есть ли способ заставить это работать с файлами WAV …