请教一下 cocos2dx3.2 win32平台下怎么播放ogg格式的音乐??
SimpleAudioEngine::getInstance()->playBackgroundMusic(“Common/SoundEffects/background.ogg”);
怎么播放不了
在 mciError = mciSendCommand(0,MCI_OPEN, MCI_OPEN_ELEMENT, reinterpret_cast<DWORD_PTR>(&mciOpen));
BREAK_IF(mciError);
时就断了
帮你顶一下,不过我估计win32不支持.ogg的格式,打包到Android中可以正常播放。ANdroid最支持.ogg的格式
取决于你用的音频库是否有ogg的解码器
ogg是谷歌的格式,要在Windows上播放必须安装对应的解码器,不过有牛逼的老外做了一套整合各种常用格式解码器包叫 K-Lite Mega Codec Pack,建议装9.0以上的版本。
安装后就去测试能不能用系统自带的播放器WMP播放ogg(如果WMP都不能播放,那cocos2dx也别想播放了)。
通过之后修改cocos音频库的源码(因为MCI有设备类型选择,而MPEGVideo才支持扩展格式),找到cocos\audio\win32\MciPlayer.cpp:
void MciPlayer::Open(const char* pFileName, UINT uId)
{
do
{
BREAK_IF(! pFileName || ! _wnd);
int nLen = (int)strlen(pFileName);
BREAK_IF(! nLen);
int nBufLen = MultiByteToWideChar(CP_UTF8, 0, pFileName, nLen + 1, nullptr, 0);
LPWSTR pBuf = new WCHAR;
BREAK_IF(! pBuf);
MultiByteToWideChar(CP_UTF8, 0, pFileName, nLen + 1, pBuf, nBufLen);
Close();
MCI_OPEN_PARMSW mciOpen = {0};
MCIERROR mciError;
mciOpen.lpstrDeviceType = TEXT("MPEGVideo");
mciOpen.lpstrElementName = pFileName;
mciError = mciSendCommandW(0,MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE, reinterpret_cast<DWORD_PTR>(&mciOpen));
BREAK_IF(mciError);
_dev = mciOpen.wDeviceID;
_soundID = uId;
_playing = false;
} while (0);
}