生活随笔
收集整理的這篇文章主要介紹了
音视频 即时通讯Linux源码
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
由于使用習(xí)慣,Linux在中國受歡迎程度遠(yuǎn)不如windows,相應(yīng)的軟件也比較少,尤其是音視頻類的軟件,但是,這并不代表就完全沒有。下面介紹一款強(qiáng)大的音視頻即時(shí)通訊平臺(tái)給大家,它就是——Anychat for Linux SDK。
AnyChat是一套跨平臺(tái)的音、視頻即時(shí)通訊解決方案,基于先進(jìn)的H.264視頻編碼標(biāo)準(zhǔn)、AAC音頻編碼標(biāo)準(zhǔn)與P2P技術(shù),支持Windows、Linux、web、Android、iOS、等操作系統(tǒng)平臺(tái),提供客戶端SDK、服務(wù)器端SDK,可與第三方平臺(tái)緊密集成。
SDK基于LinuxKernel 2.6.x研發(fā),提供標(biāo)準(zhǔn)C、C++語言開發(fā)接口。
SDK可與其它平臺(tái)如windows、Android、iOS、web等互聯(lián)互通,連接同一個(gè)服務(wù)器程序,有關(guān)服務(wù)器的SDK可參考官網(wǎng)的SDK包
?
#include?"anychat.h"?#include?<stdlib.h>?#include?<stdio.h>???CAnyChat::CAnyChat()?{?????m_dwRemoteUserId?=?-1;?}???CAnyChat::~CAnyChat()?{???}???//?void?CAnyChat::OpenRemoteUserStream(void)?{?????if(m_dwRemoteUserId?!=(DWORD)-1)??????//?already?opned?remoteuser?stream?????????return;?????DWORD?dwUserNum?=?0;?????BRAC_GetOnlineUser(NULL,dwUserNum);?????if(dwUserNum?==?0)?????????return;?????LPDWORD?lpUserList?=?(LPDWORD)malloc(sizeof(DWORD)*?dwUserNum);?????if(!lpUserList)?????????return;?????BRAC_GetOnlineUser(lpUserList,dwUserNum);?????for(int?i=0;i<(int)dwUserNum;?i++)?????{?????????m_dwRemoteUserId?=lpUserList[i];????????BRAC_UserCameraControl(m_dwRemoteUserId,?TRUE);????????BRAC_UserSpeakControl(m_dwRemoteUserId,?TRUE);?????????break;?????}?}???//?連接服務(wù)器消息?void?CAnyChat::OnAnyChatConnectMessage(BOOL?bSuccess)?{?????fprintf(stdout,"On?Connect:bSuccess(%d)\r\n",(int)bSuccess);?}?//?用戶登陸消息?void?CAnyChat::OnAnyChatLoginMessage(DWORD?dwUserId,?DWORD?dwErrorCode)?{?????fprintf(stdout,"On?Login:dwUserId(%d),?ErrorCode:%d\r\n",(int)dwUserId,dwErrorCode);?}?//?用戶進(jìn)入房間消息?void?CAnyChat::OnAnyChatEnterRoomMessage(DWORD?dwRoomId,?DWORDdwErrorCode)?{?????fprintf(stdout,"On?EnterRoom(dwRoomId=%d,dwErrorCode=%d)\r\n",dwRoomId,dwErrorCode);?????if(dwErrorCode?==?0)?????{????????BRAC_UserCameraControl(-1,TRUE);?????????BRAC_UserSpeakControl(-1,TRUE);?????}?}?//?房間在線用戶消息?void?CAnyChat::OnAnyChatOnlineUserMessage(DWORD?dwUserNum,?DWORD?dwRoomId)?{????fprintf(stdout,"Onlineuser(dwUserNum=%d,dwRoomId=%d)\r\n",dwUserNum,dwRoomId);?????OpenRemoteUserStream();?}?//?用戶打開/關(guān)閉音頻設(shè)備設(shè)備消息?void?CAnyChat::OnAnyChatMicStateChgMessage(DWORD?dwUserId,?BOOL?bOpenMic)?{???}?//?用戶進(jìn)入/退出房間消息?void?CAnyChat::OnAnyChatUserAtRoomMessage(DWORD?dwUserId,?BOOL?bEnter)?{?????fprintf(stdout,"OnUserAtRoom(dwUserId=%d,?bEnter=%d)\r\n",(int)dwUserId,(int)bEnter);???????if(dwUserId?==?m_dwRemoteUserId&&?!bEnter)?????????m_dwRemoteUserId?=?-1;?????OpenRemoteUserStream();?}?//網(wǎng)絡(luò)斷開消息?void?CAnyChat::OnAnyChatLinkCloseMessage(DWORD?dwErrorCode)?{?????fprintf(stdout,"On?LinkClose(reason=%d)\r\n",dwErrorCode);?????m_dwRemoteUserId?=?-1;?}???//?用戶攝像頭狀態(tài)改變消息?void?CAnyChat::OnAnyChatCameraStateChgMessage(DWORD?dwUserId,?DWORDdwState)?{???}?//?用戶聊天模式改變消息?void?CAnyChat::OnAnyChatChatModeChgMessage(DWORD?dwUserId,?BOOLbPublicChat)?{???}?//?用戶活動(dòng)狀態(tài)發(fā)生變化消息?void?CAnyChat::OnAnyChatActiveStateChgMessage(DWORD?dwUserId,?DWORDdwState)?{???}?//?P2P連接狀態(tài)變化消息?void?CAnyChat::OnAnyChatP2PConnectStateMessage(DWORD?dwUserId,?DWORDdwState)?{?????fprintf(stdout,"On?P2PConnect?State?Change(dwUserId=%d,?dwState=%d)\r\n",(int)dwUserId,dwState);?}???//?用戶私聊請求消息?void?CAnyChat::OnAnyChatPrivateRequestMessage(DWORD?dwUserId,?DWORDdwRequestId)?{???}?//?用戶私聊請求回復(fù)消息?void?CAnyChat::OnAnyChatPrivateEchoMessage(DWORD?dwUserId,?DWORDdwErrorCode)?{???}?//?用戶退出私聊消息?void?CAnyChat::OnAnyChatPrivateExitMessage(DWORD?dwUserId,?DWORDdwErrorCode)?{???}???//?SDK警告消息?void?CAnyChat::OnAnyChatSDKWarningMessage(DWORD?dwErrorCode,?DWORDdwReserved)?{???}???//?視頻數(shù)據(jù)回調(diào)?void?CAnyChat::OnAnyChatVideoDataCallBack(DWORD?dwUserid,?LPVOID?lpBuf,DWORD?dwLen,?LPBITMAPINFOHEADER?lpbmiHeader)?{???}?//?音頻數(shù)據(jù)回調(diào)?void?CAnyChat::OnAnyChatAudioDataCallBack(DWORD?dwUserid,?LPVOID?lpBuf,DWORD?dwLen,?LPWAVEFORMATEX?lpWaveFormatEx)?{???}?//?發(fā)送文字的回調(diào)函數(shù)?void?CAnyChat::OnAnyChatTextMsgCallBack(DWORD?dwFromUserid,?DWORDdwToUserid,?BOOL?bSecret,?LPCTSTR?lpMsgBuf,?DWORD?dwLen)?{???}?//?透明通道回調(diào)函數(shù)?void?CAnyChat::OnAnyChatTransBufferCallBack(DWORD?dwUserid,?LPBYTE?lpBuf,DWORD?dwLen)?{???}?//?透明通道數(shù)據(jù)擴(kuò)展回調(diào)函數(shù)?void?CAnyChat::OnAnyChatTransBufferExCallBack(DWORD?dwUserid,?LPBYTElpBuf,?DWORD?dwLen,?DWORD?wParam,?DWORD?lParam,?DWORD?dwTaskId)?{???}?//?文件傳輸回調(diào)函數(shù)?void?CAnyChat::OnAnyChatTransFileCallBack(DWORD?dwUserid,?LPCTSTRlpFileName,?LPCTSTR?lpTempFilePath,?DWORD?dwFileLength,?DWORD?wParam,?DWORDlParam,?DWORD?dwTaskId)?{???}?//?音量變化回調(diào)函數(shù)?void?CAnyChat::OnAnyChatVolumeChangeCallBack(BRAC_AudioDevice?device,DWORD?dwCurrentVolume)?{???}?//?SDK?Filter?通信數(shù)據(jù)回調(diào)函數(shù)?void?CAnyChat::OnAnyChatSDKFilterDataCallBack(LPBYTE?lpBuf,?DWORD?dwLen)?{???}?//?錄像、快照任務(wù)完成回調(diào)函數(shù)?void?CAnyChat::OnAnyChatRecordSnapShotCallBack(DWORD?dwUserid,?LPCTSTRlpFileName,?DWORD?dwParam,?BOOL?bRecordType)?{???}?//?異步消息通知回調(diào)函數(shù)?void?CAnyChat::OnAnyChatNotifyMessageCallBack(DWORD?dwNotifyMsg,?DWORDwParam,?DWORD?lParam)?{???}?
總結(jié)
以上是生活随笔為你收集整理的音视频 即时通讯Linux源码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。