linux视频应用程序开发,Linux平台音视频开发和音视频SDK应用
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应用相关推荐
- c#如何在linux上运行程序,在Linux上运行C#
众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x.ME.NT.2000.XP和Win CE之类的操作系统.但是,现在却有了一个叫做Mono的项目,它的目 ...
- linux 虚拟钢琴程序,基于 Linux 与 VS1003 的 MIDI 电子节拍器的设计与实现,为乐器演奏(如钢琴、吉他)...
基于 Linux 与 VS1003 的 MIDI 电子节拍器的设计与实现,为乐器演奏(如钢琴.吉他) 2016-08-22 0 0 0 4.0 分 其他 1 积分下载 如何获取积分? 基于 Linux ...
- linux保存压缩程序输出,Linux压缩zip文件
1. Linux下zip工具简介 Linux上使用命令行版的zip压缩工具创建zip压缩文件. 2. 安装zip工具 以CentOS7.5为例,默认情况下,最小化安装并没有包括zip套件. [root ...
- python windows窗口开发_Windows 平台做 Python 开发的最佳组合
选自机器之心 作者:Jon Fincher 在 Windows 上怎样做 Python 开发?是像大神那样使用纯文本编辑器,还是用更加完善的 IDE?到底是用自带的命令行工具,还是需要装新的 Term ...
- 嵌入式linux下应用程序,嵌入式Linux应用程序开发详解(完整下载)
yoogogojojo 于 2013-04-02 17:20:28发表: LZ是好人,我下了好几个资料,还都不要积分 wyy214 于 2013-04-02 08:48:01发表: 多谢分享. lov ...
- linux重定向到程序,技术|Linux I/O 重定向基础
Linux 管理的一个最重要并且有趣的话题是 I/O 重定向.此功能在命令行中使你能够将命令的输入输出取自或送到文件中,或者可以使用管道将多个命令连接在一起以形成所谓的"命令管道" ...
- linux按键检测程序,Tiny4412 Linux驱动之按键(使用查询方式) | 技术部落
前几天在TIny4412开发板上做了LED点灯的Linux驱动,其实挺简单,GPIO驱动,今天再看一下按键的驱动,毕竟按键用的还是比较广泛的,本文使用查询的方式获取按键值,后面会有文章使用中断的方式进 ...
- Linux arm 下载程序,在Linux下使用kermit和dnw给ARM板下载程序
OS: Ubuntu Linux version: 10.10 first: install kermit: 1.A 在unbuntu的终端输入:sudo apt-get install ckermi ...
- linux c 启动程序吗,Linux下C程序启动时的系统调用
写程序跟踪发现,在Linux i386中,一个程序体完全为空的C语言程序启动时要进行近100个系统调用,如下所示. [ 1]syscall: 11 //execve [ 2]syscall: 45 / ...
- linux系统vim程序编译器,Linux学习:vim程序编辑器
本次记录vim这款文本编辑器的使用方法及它有哪些使用实例等. 基本概念 在Linux环境中,配置文件对整个系统来说具有举足轻重的作用,而对于其都是以ASCII的纯文本形式存在,而利用文本编辑器就能够达 ...
最新文章
- 【Java代码实现】递归两大经典问题-----“汉诺塔问题” 与 “青蛙跳台阶问题” 讲解
- java语言提供结构_java学习之语句结构
- C#——《C#语言程序设计》实验报告——Windows桌面编程文件与流——简易记事本
- vue 不能响应set结构增加数据_Vue.set()动态的新增与修改数据,触发视图更新的方法...
- html5编辑文档,HTML5带各种趣味动画的文本编辑器
- php mysql 排名算法_MySQL PHP:优化排名查询和计数子查询
- 整套的操作体系:三点看股法
- dialog对话框初始化 mfc_MFC添加子对话框及如何初始化
- openfire源码解读--用户登录
- ROST SEAT使用方法
- 基于UNITY引擎开发的游戏源码修改方法
- mysql openxml_OpenXML SDK2.0初窥
- 一些方便的LaTex在线编辑工具
- 利用Backtrader进行期权回测之五:用backtrader_plotting查看回测结果
- 用pigz来加速解压tar.gz
- Unity用GL接口实现画格子
- HTTP Agent理解
- 十分钟教你搭建一个漂亮的博客(二--主题的修改)
- iOS 保持APP在后台长时间运行
- FL Studio21汉化中文版下载及安装方法FL专业音乐制作软件
热门文章
- “===”、“==” 的区别
- 图片可以登记版权吗?
- 什么是 Toll-Free Bridging
- 入侵介绍: 1。上传漏洞 2。暴库 3。注入 4。旁注 5。COOKIE诈骗
- Go语言下载安装教程|Goland配置教程|2021|Windows
- linux安卓导航软件下载,五款安卓导航(地图)软件耗电量评测
- JLINK SW接线方式
- 火狐谷歌chrome等浏览器支持一些css滤镜
- 十二、案例:加利福尼亚房屋价值数据集(多元线性回归) Lasso 岭回归 分箱处理非线性问题 多项式回归
- 2019年7月28日 恶心人