Воспроизведение .wav с WaveOutOpen (C ++)

Мне нужно воспроизвести аудиофайл (.wav) с функцией waveOutOpen. Я нашел руководство для этого. http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4422&lngWId = 3 но я не знаю, как это изменить для файлов .wav. Пожалуйста, помогите мне…

-1

Решение

Тебе нужно mmioOpen, mmioRead функции для чтения полезных данных из файла .WAV, а затем вы сможете поставить в очередь буферы, используя waveOut* API. Если данные в формате PCM, вы можете отправить их для воспроизведения напрямую, в противном случае вам может понадобиться распаковать их с помощью ACM API.

Вы найдете отличные фрагменты кода, ища упомянутые функции API:

0

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

вот как я это делаю (файл wav хранится в ресурсе):

static void PlaySound(LPCTSTR lpszSound)
{
HRSRC hRes; // resource handle to wave file
HGLOBAL hData;
BOOL bOk = FALSE;
if ((hRes = ::FindResource(AfxGetResourceHandle(), lpszSound,
_T("WAVE"))) != NULL &&
(hData = ::LoadResource(AfxGetResourceHandle(), hRes)) != NULL)
{
// found the resource, play it
bOk = ::sndPlaySound((LPCTSTR)::LockResource(hData),
SND_MEMORY|SND_ASYNC|SND_NODEFAULT);
::FreeResource(hData);
}
//if (!bOk)
//{
//   static BOOL bReported = FALSE;
//   if (!bReported)
//   {
//      AfxMessageBox(IDS_CANNOT_PLAY_SOUND);
//      bReported = TRUE;       // once please
//   }
//}
}

inline static void PlaySound(UINT nIDS)
{ ::PlaySound(MAKEINTRESOURCE(nIDS)); }
-1

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