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 超清画质,高清晰度低码率,与网络深度结合,基于人眼视觉体验质量优化

linux视频应用程序开发,Linux平台音视频开发和音视频SDK应用相关推荐

  1. c#如何在linux上运行程序,在Linux上运行C#

    众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x.ME.NT.2000.XP和Win CE之类的操作系统.但是,现在却有了一个叫做Mono的项目,它的目 ...

  2. linux 虚拟钢琴程序,基于 Linux 与 VS1003 的 MIDI 电子节拍器的设计与实现,为乐器演奏(如钢琴、吉他)...

    基于 Linux 与 VS1003 的 MIDI 电子节拍器的设计与实现,为乐器演奏(如钢琴.吉他) 2016-08-22 0 0 0 4.0 分 其他 1 积分下载 如何获取积分? 基于 Linux ...

  3. linux保存压缩程序输出,Linux压缩zip文件

    1. Linux下zip工具简介 Linux上使用命令行版的zip压缩工具创建zip压缩文件. 2. 安装zip工具 以CentOS7.5为例,默认情况下,最小化安装并没有包括zip套件. [root ...

  4. python windows窗口开发_Windows 平台做 Python 开发的最佳组合

    选自机器之心 作者:Jon Fincher 在 Windows 上怎样做 Python 开发?是像大神那样使用纯文本编辑器,还是用更加完善的 IDE?到底是用自带的命令行工具,还是需要装新的 Term ...

  5. 嵌入式linux下应用程序,嵌入式Linux应用程序开发详解(完整下载)

    yoogogojojo 于 2013-04-02 17:20:28发表: LZ是好人,我下了好几个资料,还都不要积分 wyy214 于 2013-04-02 08:48:01发表: 多谢分享. lov ...

  6. linux重定向到程序,技术|Linux I/O 重定向基础

    Linux 管理的一个最重要并且有趣的话题是 I/O 重定向.此功能在命令行中使你能够将命令的输入输出取自或送到文件中,或者可以使用管道将多个命令连接在一起以形成所谓的"命令管道" ...

  7. linux按键检测程序,Tiny4412 Linux驱动之按键(使用查询方式) | 技术部落

    前几天在TIny4412开发板上做了LED点灯的Linux驱动,其实挺简单,GPIO驱动,今天再看一下按键的驱动,毕竟按键用的还是比较广泛的,本文使用查询的方式获取按键值,后面会有文章使用中断的方式进 ...

  8. Linux arm 下载程序,在Linux下使用kermit和dnw给ARM板下载程序

    OS: Ubuntu Linux version: 10.10 first: install kermit: 1.A 在unbuntu的终端输入:sudo apt-get install ckermi ...

  9. linux c 启动程序吗,Linux下C程序启动时的系统调用

    写程序跟踪发现,在Linux i386中,一个程序体完全为空的C语言程序启动时要进行近100个系统调用,如下所示. [ 1]syscall: 11 //execve [ 2]syscall: 45 / ...

  10. linux系统vim程序编译器,Linux学习:vim程序编辑器

    本次记录vim这款文本编辑器的使用方法及它有哪些使用实例等. 基本概念 在Linux环境中,配置文件对整个系统来说具有举足轻重的作用,而对于其都是以ASCII的纯文本形式存在,而利用文本编辑器就能够达 ...

最新文章

  1. 【Java代码实现】递归两大经典问题-----“汉诺塔问题” 与 “青蛙跳台阶问题” 讲解
  2. java语言提供结构_java学习之语句结构
  3. C#——《C#语言程序设计》实验报告——Windows桌面编程文件与流——简易记事本
  4. vue 不能响应set结构增加数据_Vue.set()动态的新增与修改数据,触发视图更新的方法...
  5. html5编辑文档,HTML5带各种趣味动画的文本编辑器
  6. php mysql 排名算法_MySQL PHP:优化排名查询和计数子查询
  7. 整套的操作体系:三点看股法
  8. dialog对话框初始化 mfc_MFC添加子对话框及如何初始化
  9. openfire源码解读--用户登录
  10. ROST SEAT使用方法
  11. 基于UNITY引擎开发的游戏源码修改方法
  12. mysql openxml_OpenXML SDK2.0初窥
  13. 一些方便的LaTex在线编辑工具
  14. 利用Backtrader进行期权回测之五:用backtrader_plotting查看回测结果
  15. 用pigz来加速解压tar.gz
  16. Unity用GL接口实现画格子
  17. HTTP Agent理解
  18. 十分钟教你搭建一个漂亮的博客(二--主题的修改)
  19. iOS 保持APP在后台长时间运行
  20. FL Studio21汉化中文版下载及安装方法FL专业音乐制作软件

热门文章

  1. “===”、“==” 的区别
  2. 图片可以登记版权吗?
  3. 什么是 Toll-Free Bridging
  4. 入侵介绍: 1。上传漏洞 2。暴库 3。注入 4。旁注 5。COOKIE诈骗
  5. Go语言下载安装教程|Goland配置教程|2021|Windows
  6. linux安卓导航软件下载,五款安卓导航(地图)软件耗电量评测
  7. JLINK SW接线方式
  8. 火狐谷歌chrome等浏览器支持一些css滤镜
  9. 十二、案例:加利福尼亚房屋价值数据集(多元线性回归) Lasso 岭回归 分箱处理非线性问题 多项式回归
  10. 2019年7月28日 恶心人