您的位置:首页 > 运维架构 > Linux

Linux即时通讯应用系统的音视频功能实现 音视频SDK

2017-09-28 23:15 483 查看
  Linux即时通讯应用系统的音视频功能实现 音视频SDK

  下面介绍一款强大的音视频即时通讯开发平台给大家,它就是——云智真音视频SDK for Linux

  云智真提供一套跨平台的即时通讯音视频解决方案,基于先进的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即时通讯软件中部署的音视频SDK做参考。
  #include "ucvive.h"

  #include

  #include

  CUcvive::CUcvive()

  {

  m_dwRemoteUserId = -1;

  }

  CUcvive::~CUcvive()

  {

  }

  //

  void CUcvive::OpenRemoteUserStream(void)

  {

  if(m_dwRemoteUserId !=(DWORD)-1) // already opnedremoteuser 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 CUcvive::OnUcviveConnectMessage(BOOL bSuccess)

  {

  fprintf(stdout,"OnConnect:bSuccess(%d)\r\n",(int)bSuccess);

  }

  // 用户登陆消息

  void CUcvive::OnUcviveLoginMessage(DWORD dwUserId, DWORDdwErrorCode)

  {

  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,"OnLinkClose(reason=%d)\r\n",dwErrorCode);

  m_dwRemoteUserId = -1;

  }

  // 用户摄像头状态改变消息

  void CUcvive::OnUcviveCameraStateChgMessage(DWORDdwUserId, DWORDdwState)

  {

  }

  // 用户聊天模式改变消息

  void CUcvive::OnUcviveChatModeChgMessage(DWORD dwUserId,BOOLbPublicChat)

  {

  }

  // 用户活动状态发生变化消息

  void CUcvive::OnUcviveActiveStateChgMessage(DWORDdwUserId, DWORDdwState)

  {

  }

  // P2P连接状态变化消息

  void CUcvive::OnUcviveP2PConnectStateMessage(DWORDdwUserId, DWORDdwState)

  {

  fprintf(stdout,"On P2PConnect StateChange(dwUserId=%d, dwState=%d)\r\n",(int)dwUserId,dwState);

  }

  // 用户私聊请求消息

  void CUcvive::OnUcvivePrivateRequestMessage(DWORDdwUserId, DWORDdwRequestId)

  {

  }

  // 用户私聊请求回复消息

  void CUcvive::OnUcvivePrivateEchoMessage(DWORD dwUserId,DWORDdwErrorCode)

  {

  }

  // 用户退出私聊消息

  void CUcvive::OnUcvivePrivateExitMessage(DWORD dwUserId,DWORDdwErrorCode)

  {

  }

  // SDK警告消息

  void CUcvive::OnUcviveSDKWarningMessage(DWORDdwErrorCode, 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(DWORDdwUserid, LPBYTElpBuf, DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwTaskId)

  {

  }

  // 文件传输回调函数

  void CUcvive::OnUcviveTransFileCallBack(DWORD dwUserid,LPCTSTRlpFileName, LPCTSTR lpTempFilePath, DWORD dwFileLength, DWORD wParam,DWORDlParam, DWORD dwTaskId)

  {

  }

  // 音量变化回调函数

  voidCUcvive::OnUcviveVolumeChangeCallBack(BRAC_AudioDevice device,DWORD dwCurrentVolume)

  {

  }

  // SDK Filter 通信数据回调函数

  void CUcvive::OnUcviveSDKFilterDataCallBack(LPBYTE lpBuf,DWORD dwLen)

  {

  }

  // 录像、快照任务完成回调函数

  void CUcvive::OnUcviveRecordSnapShotCallBack(DWORDdwUserid, LPCTSTRlpFileName, DWORD dwParam, BOOL bRecordType)

  {

  }

  // 异步消息通知回调函数

  void CUcvive::OnUcviveNotifyMessageCallBack(DWORDdwNotifyMsg, 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 超清画质,高清晰度低码率,与网络深度结合,基于人眼视觉体验质量优化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐