Linux平台部署音视频SDK实现即时通讯功能
下面介绍一款强大的音视频即时通讯平台给大家,它就是——云智真音视频SDK。
云智真提供一套跨平台的音、视频即时通讯解决方案,基于先进的H.264视频编码标准、AAC音频编码标准与P2P技术,支持Windows、Linux、web、Android、iOS、等操作系统平台,提供客户端SDK、服务器端SDK,可与第三方平台紧密集成。
SDK基于LinuxKernel
2.6.x研发,提供标准C、C++语言开发接口。
云智真音视频SDK可与其它平台如windows、android、ios、web等互联互通,连接同一个服务器程序,有关服务器的SDK可向云智真官网索取SDK包
下面是部分云智真在Linux即时通讯软件中部署的
#include "ucvive.h"
#include
#include
CUcvive::CUcvive()
{
m_dwRemoteUserId = -1;
}
CUcvive::~CUcvive()
{
}
//
void
CUcvive::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
i++)
{
m_dwRemoteUserId =lpUserList[i];
BRAC_UserCameraControl(m_dwRemoteUserId,
TRUE);
BRAC_UserSpeakControl(m_dwRemoteUserId,
TRUE);
break;
}
}
// 连接服务器消息
void CUcvive::OnUcviveConnectMessage(BOOL
bSuccess)
{
fprintf(stdout,"On
Connect:bSuccess(%d)\r\n",(int)bSuccess);
}
// 用户登陆消息
void CUcvive::OnUcviveLoginMessage(DWORD
dwUserId, DWORD dwErrorCode)
{
fprintf(stdout,"On Login:dwUserId(%d),
ErrorCode:%d\r\n",(int)dwUserId,dwErrorCode);
}
// 用户进入房间消息
void
CUcvive::OnUcviveEnterRoomMessage(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
CUcvive::OnUcviveOnlineUserMessage(DWORD dwUserNum, DWORD
dwRoomId)
{
fprintf(stdout,"Onlineuser(dwUserNum=%d,dwRoomId=%d)\r\n",dwUserNum,dwRoomId);
OpenRemoteUserStream();
}
// 用户打开/关闭音频设备设备消息
void
CUcvive::OnUcviveMicStateChgMessage(DWORD dwUserId, BOOL
bOpenMic)
{
}
// 用户进入/退出房间消息
void
CUcvive::OnUcviveUserAtRoomMessage(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
CUcvive::OnUcviveLinkCloseMessage(DWORD dwErrorCode)
{
fprintf(stdout,"On
LinkClose(reason=%d)\r\n",dwErrorCode);
m_dwRemoteUserId = -1;
}
// 用户摄像头状态改变消息
void
CUcvive::OnUcviveCameraStateChgMessage(DWORD dwUserId,
DWORDdwState)
{
}
// 用户聊天模式改变消息
void
CUcvive::OnUcviveChatModeChgMessage(DWORD dwUserId,
BOOLbPublicChat)
{
}
// 用户活动状态发生变化消息
void
CUcvive::OnUcviveActiveStateChgMessage(DWORD dwUserId,
DWORDdwState)
{
}
// P2P连接状态变化消息
void
CUcvive::OnUcviveP2PConnectStateMessage(DWORD dwUserId,
DWORDdwState)
{
fprintf(stdout,"On P2PConnect State
Change(dwUserId=%d,
dwState=%d)\r\n",(int)dwUserId,dwState);
}
// 用户私聊请求消息
void
CUcvive::OnUcvivePrivateRequestMessage(DWORD dwUserId,
DWORDdwRequestId)
{
}
// 用户私聊请求回复消息
void
CUcvive::OnUcvivePrivateEchoMessage(DWORD dwUserId,
DWORDdwErrorCode)
{
}
// 用户退出私聊消息
void
CUcvive::OnUcvivePrivateExitMessage(DWORD dwUserId,
DWORDdwErrorCode)
{
}
// SDK警告消息
void
CUcvive::OnUcviveSDKWarningMessage(DWORD dwErrorCode,
DWORDdwReserved)
{
}
// 视频数据回调
void
CUcvive::OnUcviveVideoDataCallBack(DWORD dwUserid, LPVOID
lpBuf,DWORD dwLen, LPBITMAPINFOHEADER lpbmiHeader)
{
}
// 音频数据回调
void
CUcvive::OnUcviveAudioDataCallBack(DWORD dwUserid, LPVOID
lpBuf,DWORD dwLen, LPWAVEFORMATEX lpWaveFormatEx)
{
}
// 发送文字的回调函数
void CUcvive::OnUcviveTextMsgCallBack(DWORD
dwFromUserid, DWORDdwToUserid, BOOL bSecret, LPCTSTR lpMsgBuf,
DWORD dwLen)
{
}
// 透明通道回调函数
void
CUcvive::OnUcviveTransBufferCallBack(DWORD dwUserid, LPBYTE
lpBuf,DWORD dwLen)
{
}
// 透明通道数据扩展回调函数
void
CUcvive::OnUcviveTransBufferExCallBack(DWORD dwUserid, LPBYTElpBuf,
DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwTaskId)
{
}
// 文件传输回调函数
void
CUcvive::OnUcviveTransFileCallBack(DWORD dwUserid,
LPCTSTRlpFileName, LPCTSTR lpTempFilePath, DWORD dwFileLength,
DWORD wParam, DWORDlParam, DWORD dwTaskId)
{
}
// 音量变化回调函数
void
CUcvive::OnUcviveVolumeChangeCallBack(BRAC_AudioDevice device,DWORD
dwCurrentVolume)
{
}
// SDK Filter 通信数据回调函数
void
CUcvive::OnUcviveSDKFilterDataCallBack(LPBYTE lpBuf, DWORD
dwLen)
{
}
// 录像、快照任务完成回调函数
void
CUcvive::OnUcviveRecordSnapShotCallBack(DWORD dwUserid,
LPCTSTRlpFileName, DWORD dwParam, BOOL bRecordType)
{
}
// 异步消息通知回调函数
void
CUcvive::OnUcviveNotifyMessageCallBack(DWORD dwNotifyMsg,
DWORDwParam, DWORD lParam)
{
}
云智真音视频SDK功能特点:
让开发者一次实现所有实时功能,一个极简 SDK
全平台支持和互通,API 接口丰富,灵活调用,最快 30 分钟可完成接入,云智真提供一个极简SDK让开发者接实时虚拟通信网,在任何App和网站实现高质量的音频通话、视频通话、全互动直播。
1、跨平台支持
2、Web
与Native 互通,手机端和 Web 可以互通,极大方便开发者的全平台业务
3、5000+
设备支持,适配全部 iOS 设备和 5000+ Android 终端设备,保证用户体验一致,为开发者节省大量时间
4、API
接口灵活调用,小接口也能办大事,1)选择模式,通信或直播,2)开启视频,3)设置视频显示模式,本地/远端,4)设置视频分辨率,更改视窗布局,5)开始通话,加入频道,6)结束通话,离开频道
5、开放第三方接入,支持第三方的功能 API
接入和自定义滤镜、美颜、加密、人脸识别、鉴黄、卡通换脸等均支持第三方接入,滤镜、美颜、加密、人脸识别、鉴黄、卡通换脸
6、通话质量数据实时监控,通话质量数据,终端用户分布地区,通话设备平台分布,网络状况分布
7、独家专利编解码,适应公共互联网专利编码,对抗传输信道不稳定,码率根据带宽自适应调整,
1)全频带音质,44.1kHz 超宽频音质,将普通电话音质提高6倍
2)超高清画质,最高支持 720P 超清画质,高清晰度低码率,与网络深度结合,基于人眼视觉体验质量优化
更多云智真音视频SDK资料
音视频即时通讯开发平台实用案例
http://www.ucvive.com/app/2017061090.html