EasyPlayerPro-win基礎版本的音頻播放爲單一通道播放,即同一時間僅容許一個通道播放聲音,現應客戶需求,在基礎版本上實現獨立的音頻播放,即每一個通道可同時播放視頻和音頻;git
將音頻播放類DirectSoundPlayer移到每一個播放通道中, 取消以前的音頻通道關係判斷; 音量控制類保持不變;github
注: 在沒有聲音數據時,需填充爲靜音數據. 不然會一直播放最後一幀的音頻; windows
播放數據填充代碼以下: while (1) { if (pDirectSoundObj->flag == 0x03) break; if ( (res >= WAIT_OBJECT_0) && (res < WAIT_OBJECT_0+DIRECT_SOUND_BUFFER_NUM) ) { pDirectSoundObj->audioFrameNum = BUFQUE_GetFrameNum(pDirectSoundObj->buffQueue, consumerHandle, BUFFER_TYPE_AUDIO); unsigned char *pbuf = NULL, *pbuf2=NULL; DWORD buflen = 0, buflen2=0; HRESULT hr = pDirectSoundObj->pDirectSoundBuffer8->Lock(offset, pDirectSoundObj->packetSize, (LPVOID*)&pbuf, &buflen, (LPVOID*)&pbuf2, &buflen2, 0); if (DSERR_BUFFERLOST == hr) { pDirectSoundObj->pDirectSoundBuffer8->Restore(); hr = pDirectSoundObj->pDirectSoundBuffer8->Lock(offset, pDirectSoundObj->packetSize, (LPVOID*)&pbuf, &buflen, (LPVOID*)&pbuf2, &buflen2, 0); } if (buflen > 0) { int ret = BUFQUE_GetData(pDirectSoundObj->buffQueue, consumerHandle, NULL, &bufferType, NULL, NULL, &sourceBuff.bufpos, sourceBuff.pbuf, 0x01); if ( (ret == 0x00) && (buflen == sourceBuff.bufpos) ) { memcpy(pbuf, sourceBuff.pbuf, sourceBuff.bufpos); if (buflen2 > 0) { ret = BUFQUE_GetData(pDirectSoundObj->buffQueue, consumerHandle, NULL, &bufferType, NULL, NULL, &sourceBuff.bufpos, sourceBuff.pbuf, 0x01); if (ret == 0x00 && buflen2 == sourceBuff.bufpos) { memcpy(pbuf2, sourceBuff.pbuf, sourceBuff.bufpos); } } } else { memset(pbuf, 0x00, buflen); //填充爲靜音 } pDirectSoundObj->pDirectSoundBuffer8->Unlock(pbuf, buflen, pbuf2, buflen2); } offset += (buflen+buflen2); if (offset >= pDirectSoundObj->directSoundBufferDesc.dwBufferBytes) offset = 0; } .... }
EasyPlayerPro是一款全功能的流媒體播放器,支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多種流媒體協議播放、支持本地文件播放,支持本地抓拍、本地錄像、播放旋轉、多屏播放、倍數播放等多種功能特性,核心基於ffmpeg,穩定、高效、可靠、可控,支持Windows、Android、iOS三個平臺,目前在多家教育、安防、行業型公司,都獲得的應用,廣受好評!服務器
EasyPlayerPro:https://github.com/EasyDSS/EasyPlayerPromarkdown
點擊連接加入羣【EasyPlayer & EasyPlayerPro】:544917793插件
郵件:support@easydarwin.org 線程
QQ交流羣:544917793設計
EasyDarwin開源流媒體服務器:www.EasyDarwin.orgcode
EasyDSS商用流媒體解決方案:www.EasyDSS.comorm
EasyNVR無插件直播方案:www.EasyNVR.com
Copyright © EasyDarwin Team 2012-2017