cocos2d-x 在windows 下播放ogg 背景音乐

cocos2d-x在Windows环境下播放ogg背景音乐需要依赖解码器。安装K-Lite Mega Codec Pack以确保Windows Media Player能播放ogg文件。接着,需要修改cocos2d/cocos/audio/win32目录下的micPlayer.cpp,特别是open()函数中与解码器相关的代码。完成修改并重新编译libcocos2d库后,将能够播放ogg音频文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

能不能播放ogg, 主要取决于你用的音频库是否有ogg的解码器。

ogg 是谷歌的格式,所以几乎所有的android手机都支持这种格式, cocos2d-x 用windows 默认播放器,所以要装解码器。网上搜索一下 K-Lite Mega Codec Pack。 下载安装后。打开windows Medio Player 是否能播放ogg 音频文件。 如果没问题,接下来还需要改cocos2dx 音频相关的代码。、、

找打micPlayer.cpp.修改open()函数相关的代码,cpp文件位于 cocos2d/cocos/audio/win32 目录


void MciPlayer::Open(const char* pFileName, UINT uId)
{
//     WCHAR * pBuf = NULL;
    do 
    {
        BREAK_IF(! pFileName || ! _wnd);
        int nLen = (int)strlen(pFileName);
        BREAK_IF(! nLen);
//         pBuf = new WCHAR[nLen + 1];
//         BREAK_IF(! pBuf);
//         MultiByteToWideChar(CP_ACP, 0, pFileName, nLen + 1, pBuf, nLen + 1);

        strExt = cocos2d::FileUtils::getInstance()->getFileExtension(pFileName);

        Close();

        MCI_OPEN_PARMS mciOpen = {0};
        MCIERROR mciError;
		//mciOpen.lpstrDeviceType = (LPCTSTR)MCI_ALL_DEVICE_ID; //这是原来的代码
		mciOpen.lpstrDeviceType = TEXT("MPEGVideo");	//修改后的代码
		WCHAR* fileNameWideChar = new WCHAR[nLen + 1];
		BREAK_IF(! fileNameWideChar);
		MultiByteToWideChar(CP_ACP, 0, pFileName, nLen + 1, fileNameWideChar, nLen + 1);
        mciOpen.lpstrElementName = fileNameWideChar;

       // mciError = mciSendCommand(0,MCI_OPEN, MCI_OPEN_ELEMENT, reinterpret_cast<DWORD_PTR>(&mciOpen)); //原来的代码
		mciError = mciSendCommandW(0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE, reinterpret_cast<DWORD_PTR>(&mciOpen)); //修改后的代码
		CC_SAFE_DELETE_ARRAY(mciOpen.lpstrElementName);
        BREAK_IF(mciError);

        _dev = mciOpen.wDeviceID;
        _soundID = uId;
        _playing = false;
    } while (0);
}

上面的代码修改2处,一处是

micOpen.lpstrDeviceType = TEXT("MEPGVideo");

另外一处是

micError = mciSendCommandW(0,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_OPEN_TYPE,reinterpret_cast<DWORD_PTR>(&mciOpen))

修改完之后,重新编译libcocos2d 库就可以播放了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值