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可參考開發包。已經上傳到51CTO,大家可以放心下載Linux平臺上的音視頻即時通訊開發平臺
下面是客戶端部分代碼:
#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;
    }
}
 
// 連接服務器消息
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);
}
// 用戶進入房間消息
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();
}
// 用戶打開/關閉音頻設備設備消息
void CAnyChat::OnAnyChatMicStateChgMessage(DWORD dwUserId, BOOL bOpenMic)
{
 
}
// 用戶進入/退出房間消息
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();
}
//網絡斷開消息
void CAnyChat::OnAnyChatLinkCloseMessage(DWORD dwErrorCode)
{
    fprintf(stdout,"On LinkClose(reason=%d)\r\n",dwErrorCode);
    m_dwRemoteUserId = -1;
}
 
// 用戶攝像頭狀態改變消息
void CAnyChat::OnAnyChatCameraStateChgMessage(DWORD dwUserId, DWORDdwState)
{
 
}
// 用戶聊天模式改變消息
void CAnyChat::OnAnyChatChatModeChgMessage(DWORD dwUserId, BOOLbPublicChat)
{
 
}
// 用戶活動狀態發生變化消息
void CAnyChat::OnAnyChatActiveStateChgMessage(DWORD dwUserId, DWORDdwState)
{
 
}
// P2P連接狀態變化消息
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)
{
 
}
// 用戶私聊請求回覆消息
void CAnyChat::OnAnyChatPrivateEchoMessage(DWORD dwUserId, DWORDdwErrorCode)
{
 
}
// 用戶退出私聊消息
void CAnyChat::OnAnyChatPrivateExitMessage(DWORD dwUserId, DWORDdwErrorCode)
{
 
}
 
// SDK警告消息
void CAnyChat::OnAnyChatSDKWarningMessage(DWORD dwErrorCode, DWORDdwReserved)
{
 
}
 
// 視頻數據回調
void CAnyChat::OnAnyChatVideoDataCallBack(DWORD dwUserid, LPVOID lpBuf,DWORD dwLen, LPBITMAPINFOHEADER lpbmiHeader)
{
 
}
// 音頻數據回調
void CAnyChat::OnAnyChatAudioDataCallBack(DWORD dwUserid, LPVOID lpBuf,DWORD dwLen, LPWAVEFORMATEX lpWaveFormatEx)
{
 
}
// 發送文字的回調函數
void CAnyChat::OnAnyChatTextMsgCallBack(DWORD dwFromUserid, DWORDdwToUserid, BOOL bSecret, LPCTSTR lpMsgBuf, DWORD dwLen)
{
 
}
// 透明通道回調函數
void CAnyChat::OnAnyChatTransBufferCallBack(DWORD dwUserid, LPBYTE lpBuf,DWORD dwLen)
{
 
}
// 透明通道數據擴展回調函數
void CAnyChat::OnAnyChatTransBufferExCallBack(DWORD dwUserid, LPBYTElpBuf, DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwTaskId)
{
 
}
// 文件傳輸回調函數
void CAnyChat::OnAnyChatTransFileCallBack(DWORD dwUserid, LPCTSTRlpFileName, LPCTSTR lpTempFilePath, DWORD dwFileLength, DWORD wParam, DWORDlParam, DWORD dwTaskId)
{
 
}
// 音量變化回調函數
void CAnyChat::OnAnyChatVolumeChangeCallBack(BRAC_AudioDevice device,DWORD dwCurrentVolume)
{
 
}
// SDK Filter 通信數據回調函數
void CAnyChat::OnAnyChatSDKFilterDataCallBack(LPBYTE lpBuf, DWORD dwLen)
{
 
}
// 錄像、快照任務完成回調函數
void CAnyChat::OnAnyChatRecordSnapShotCallBack(DWORD dwUserid, LPCTSTRlpFileName, DWORD dwParam, BOOL bRecordType)
{
 
}
// 異步消息通知回調函數
void CAnyChat::OnAnyChatNotifyMessageCallBack(DWORD dwNotifyMsg, DWORDwParam, DWORD lParam)
{
 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章