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 可参考   Linux平台设备上的音频即时通讯应用开发 开发包。开发包已经上传到 51CTO ,大家可以放心下载
开发包的特点介绍
支持 Linux 平台设备上的音频即时通讯应用开发
提供 C++ 语言 API 接口,开放示例源代码
集成 H.264 AAC AMR 等编解码技术
封装音视频的采集、编解码、传输、显示和播放等模块
支持 Android Web PC iOS 等设备和 Linux 之间的互联互通


下面是客户端部分代码:
#include"anychat.h"
#include<stdlib.h>
#include<stdio.h>
 
CAnyChat::CAnyChat()
{
    m_dwRemoteUserId = -1;
}
 
CAnyChat::~CAnyChat()
{
 
}
 
//
voidCAnyChat::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;
    }
}
 
// 连接服务器消息
voidCAnyChat::OnAnyChatConnectMessage(BOOL bSuccess)
{
    fprintf(stdout,"OnConnect:bSuccess(%d)\r\n",(int)bSuccess);
}
// 用户登陆消息
voidCAnyChat::OnAnyChatLoginMessage(DWORD dwUserId, DWORD dwErrorCode)
{
    fprintf(stdout,"On Login:dwUserId(%d),ErrorCode:%d\r\n",(int)dwUserId,dwErrorCode);
}
// 用户进入房间消息
voidCAnyChat::OnAnyChatEnterRoomMessage(DWORD dwRoomId, 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(DWORD dwUserNum, DWORD dwRoomId)
{
  fprintf(stdout,"Onlineuser(dwUserNum=%d,dwRoomId=%d)\r\n",dwUserNum,dwRoomId);
    OpenRemoteUserStream();
}
// 用户打开/关闭音频设备设备消息
voidCAnyChat::OnAnyChatMicStateChgMessage(DWORD dwUserId, BOOL bOpenMic)
{
 
}
// 用户进入/退出房间消息
voidCAnyChat::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();
}
//网络断开消息
voidCAnyChat::OnAnyChatLinkCloseMessage(DWORD dwErrorCode)
{
    fprintf(stdout,"OnLinkClose(reason=%d)\r\n",dwErrorCode);
    m_dwRemoteUserId = -1;
}
 
// 用户摄像头状态改变消息
voidCAnyChat::OnAnyChatCameraStateChgMessage(DWORD dwUserId, DWORDdwState)
{
 
}
// 用户聊天模式改变消息
voidCAnyChat::OnAnyChatChatModeChgMessage(DWORD dwUserId, BOOLbPublicChat)
{
 
}
// 用户活动状态发生变化消息
voidCAnyChat::OnAnyChatActiveStateChgMessage(DWORD dwUserId, DWORDdwState)
{
 
}
// P2P连接状态变化消息
voidCAnyChat::OnAnyChatP2PConnectStateMessage(DWORD dwUserId, DWORDdwState)
{
    fprintf(stdout,"On P2PConnect StateChange(dwUserId=%d, dwState=%d)\r\n",(int)dwUserId,dwState);
}
 
// 用户私聊请求消息
voidCAnyChat::OnAnyChatPrivateRequestMessage(DWORD dwUserId, DWORDdwRequestId)
{
 
}
// 用户私聊请求回复消息
voidCAnyChat::OnAnyChatPrivateEchoMessage(DWORD dwUserId, DWORDdwErrorCode)
{
 
}
// 用户退出私聊消息
voidCAnyChat::OnAnyChatPrivateExitMessage(DWORD dwUserId, DWORDdwErrorCode)
{
 
}
 
// SDK警告消息
voidCAnyChat::OnAnyChatSDKWarningMessage(DWORD dwErrorCode, DWORDdwReserved)
{
 
}
 
// 视频数据回调
voidCAnyChat::OnAnyChatVideoDataCallBack(DWORD dwUserid, LPVOID lpBuf,DWORD dwLen,LPBITMAPINFOHEADER lpbmiHeader)
{
 
}
// 音频数据回调
voidCAnyChat::OnAnyChatAudioDataCallBack(DWORD dwUserid, LPVOID lpBuf,DWORD dwLen,LPWAVEFORMATEX lpWaveFormatEx)
{
 
}
// 发送文字的回调函数
voidCAnyChat::OnAnyChatTextMsgCallBack(DWORD dwFromUserid, DWORDdwToUserid, BOOLbSecret, LPCTSTR lpMsgBuf, DWORD dwLen)
{
 
}
// 透明通道回调函数
voidCAnyChat::OnAnyChatTransBufferCallBack(DWORD dwUserid, LPBYTE lpBuf,DWORDdwLen)
{
 
}
// 透明通道数据扩展回调函数
voidCAnyChat::OnAnyChatTransBufferExCallBack(DWORD dwUserid, LPBYTElpBuf, DWORDdwLen, DWORD wParam, DWORD lParam, DWORD dwTaskId)
{
 
}
// 文件传输回调函数
voidCAnyChat::OnAnyChatTransFileCallBack(DWORD dwUserid, LPCTSTRlpFileName, LPCTSTRlpTempFilePath, DWORD dwFileLength, DWORD wParam, DWORDlParam, DWORD dwTaskId)
{
 
}
// 音量变化回调函数
voidCAnyChat::OnAnyChatVolumeChangeCallBack(BRAC_AudioDevice device,DWORDdwCurrentVolume)
{
 
}
// SDK Filter 通信数据回调函数
voidCAnyChat::OnAnyChatSDKFilterDataCallBack(LPBYTE lpBuf, DWORD dwLen)
{
 
}
// 录像、快照任务完成回调函数
voidCAnyChat::OnAnyChatRecordSnapShotCallBack(DWORD dwUserid, LPCTSTRlpFileName,DWORD dwParam, BOOL bRecordType)
{
 
}
// 异步消息通知回调函数
void CAnyChat::OnAnyChatNotifyMessageCallBack(DWORDdwNotifyMsg, DWORDwParam, DWORD lParam)
{
 
}

你可能感兴趣的:(linux,windows,即使通讯)