在linux系统下实现音视频即时通讯的部分代码

由于使用习惯,Linux在中国受欢迎程度远不如windows,相应的软件也比较少,尤其是音视频类的软件,但是,这并不代表就完全没有。下面介绍一款强大的音视频即时通讯平台给大家,它就是——Anychat for Linux SDK。

AnyChat是一套跨平台的音、视频即时通讯解决方案,基于先进的H.264视频编码标准、AAC音频编码标准与P2P技术,支持Windows、Linux、Mobile、Android、iOS、Mac等操作系统平台,提供客户端SDK、服务器端SDK,可与第三方平台紧密集成。

AnyChat for Linux基于LinuxKernel 2.6.x研发,提供标准C、C++语言开发接口。

AnyChat for Linux可与其它平台的AnyChat互联互通,连接同一个服务器程序,有关服务器的SDK可参考官网的SDK包

    #include"anychat.h"#include<stdlib.h>#include<stdio.h>CAnyChat::CAnyChat(){m_dwRemoteUserId=-1;}CAnyChat::~CAnyChat(){}//voidCAnyChat::OpenRemoteUserStream(void){if(m_dwRemoteUserId!=(DWORD)-1)//alreadyopnedremoteuserstreamreturn;DWORDdwUserNum=0;BRAC_GetOnlineUser(NULL,dwUserNum);if(dwUserNum==0)return;LPDWORDlpUserList=(LPDWORD)malloc(sizeof(DWORD)*dwUserNum);if(!lpUserList)return;BRAC_GetOnlineUser(lpUserList,dwUserNum);for(inti=0;i<(int)dwUserNum;i++){m_dwRemoteUserId=lpUserList[i];BRAC_UserCameraControl(m_dwRemoteUserId,TRUE);BRAC_UserSpeakControl(m_dwRemoteUserId,TRUE);break;}}//连接服务器消息voidCAnyChat::OnAnyChatConnectMessage(BOOLbSuccess){fprintf(stdout,"OnConnect:bSuccess(%d)\r\n",(int)bSuccess);}//用户登陆消息voidCAnyChat::OnAnyChatLoginMessage(DWORDdwUserId,DWORDdwErrorCode){fprintf(stdout,"OnLogin:dwUserId(%d),ErrorCode:%d\r\n",(int)dwUserId,dwErrorCode);}//用户进入房间消息voidCAnyChat::OnAnyChatEnterRoomMessage(DWORDdwRoomId,DWORDdwErrorCode){fprintf(stdout,"OnEnterRoom(dwRoomId=%d,dwErrorCode=%d)\r\n",dwRoomId,dwErrorCode);if(dwErrorCode==0){BRAC_UserCameraControl(-1,TRUE);BRAC_UserSpeakControl(-1,TRUE);}}//房间在线用户消息voidCAnyChat::OnAnyChatOnlineUserMessage(DWORDdwUserNum,DWORDdwRoomId){fprintf(stdout,"Onlineuser(dwUserNum=%d,dwRoomId=%d)\r\n",dwUserNum,dwRoomId);OpenRemoteUserStream();}//用户打开/关闭音频设备设备消息voidCAnyChat::OnAnyChatMicStateChgMessage(DWORDdwUserId,BOOLbOpenMic){}//用户进入/退出房间消息voidCAnyChat::OnAnyChatUserAtRoomMessage(DWORDdwUserId,BOOLbEnter){fprintf(stdout,"OnUserAtRoom(dwUserId=%d,bEnter=%d)\r\n",(int)dwUserId,(int)bEnter);if(dwUserId==m_dwRemoteUserId&&!bEnter)m_dwRemoteUserId=-1;OpenRemoteUserStream();}//网络断开消息voidCAnyChat::OnAnyChatLinkCloseMessage(DWORDdwErrorCode){fprintf(stdout,"OnLinkClose(reason=%d)\r\n",dwErrorCode);m_dwRemoteUserId=-1;}//用户摄像头状态改变消息voidCAnyChat::OnAnyChatCameraStateChgMessage(DWORDdwUserId,DWORDdwState){}//用户聊天模式改变消息voidCAnyChat::OnAnyChatChatModeChgMessage(DWORDdwUserId,BOOLbPublicChat){}//用户活动状态发生变化消息voidCAnyChat::OnAnyChatActiveStateChgMessage(DWORDdwUserId,DWORDdwState){}//P2P连接状态变化消息voidCAnyChat::OnAnyChatP2PConnectStateMessage(DWORDdwUserId,DWORDdwState){fprintf(stdout,"OnP2PConnectStateChange(dwUserId=%d,dwState=%d)\r\n",(int)dwUserId,dwState);}//用户私聊请求消息voidCAnyChat::OnAnyChatPrivateRequestMessage(DWORDdwUserId,DWORDdwRequestId){}//用户私聊请求回复消息voidCAnyChat::OnAnyChatPrivateEchoMessage(DWORDdwUserId,DWORDdwErrorCode){}//用户退出私聊消息voidCAnyChat::OnAnyChatPrivateExitMessage(DWORDdwUserId,DWORDdwErrorCode){}//SDK警告消息voidCAnyChat::OnAnyChatSDKWarningMessage(DWORDdwErrorCode,DWORDdwReserved){}//视频数据回调voidCAnyChat::OnAnyChatVideoDataCallBack(DWORDdwUserid,LPVOIDlpBuf,DWORDdwLen,LPBITMAPINFOHEADERlpbmiHeader){}//音频数据回调voidCAnyChat::OnAnyChatAudioDataCallBack(DWORDdwUserid,LPVOIDlpBuf,DWORDdwLen,LPWAVEFORMATEXlpWaveFormatEx){}//发送文字的回调函数voidCAnyChat::OnAnyChatTextMsgCallBack(DWORDdwFromUserid,DWORDdwToUserid,BOOLbSecret,LPCTSTRlpMsgBuf,DWORDdwLen){}//透明通道回调函数voidCAnyChat::OnAnyChatTransBufferCallBack(DWORDdwUserid,LPBYTElpBuf,DWORDdwLen){}//透明通道数据扩展回调函数voidCAnyChat::OnAnyChatTransBufferExCallBack(DWORDdwUserid,LPBYTElpBuf,DWORDdwLen,DWORDwParam,DWORDlParam,DWORDdwTaskId){}//文件传输回调函数voidCAnyChat::OnAnyChatTransFileCallBack(DWORDdwUserid,LPCTSTRlpFileName,LPCTSTRlpTempFilePath,DWORDdwFileLength,DWORDwParam,DWORDlParam,DWORDdwTaskId){}//音量变化回调函数voidCAnyChat::OnAnyChatVolumeChangeCallBack(BRAC_AudioDevicedevice,DWORDdwCurrentVolume){}//SDKFilter通信数据回调函数voidCAnyChat::OnAnyChatSDKFilterDataCallBack(LPBYTElpBuf,DWORDdwLen){}//录像、快照任务完成回调函数voidCAnyChat::OnAnyChatRecordSnapShotCallBack(DWORDdwUserid,LPCTSTRlpFileName,DWORDdwParam,BOOLbRecordType){}//异步消息通知回调函数voidCAnyChat::OnAnyChatNotifyMessageCallBack(DWORDdwNotifyMsg,DWORDwParam,DWORDlParam){}

她是应该难过的往回走,还是蹲下来哭泣?

在linux系统下实现音视频即时通讯的部分代码

相关文章:

你感兴趣的文章:

标签云: