音视频 即时通讯Linux源码
由于使用习惯,Linux在中国受欢迎程度远不如windows,相应的软件也比较少,尤其是音视频类的软件,但是,这并不代表就完全没有。下面介绍一款强大的音视频即时通讯平台给大家,它就是——Anychat for Linux SDK。
AnyChat是一套跨平台的音、视频即时通讯解决方案,基于先进的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包
- #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)
- {
- }
音视频 即时通讯Linux源码相关推荐
- 用腾讯即时通讯IM和实时音视频实现陪玩系统源码的语音通话功能
在陪玩系统源码中,用户之间主要的交流方式就是语音通话,实时互动性的语音通话能让人产生面对面交谈的感觉,所以在陪玩系统源码中,语音通话功能的开发非常重要,今天我们就一起来看看如何用腾讯即时通讯IM和实时 ...
- 在linux系统下实现音视频即时通讯的部分代码
由于使用习惯,Linux在中国受欢迎程度远不如windows,相应的软件也比较少,尤其是音视频类的软件,但是,这并不代表就完全没有.下面介绍一款强大的音视频即时通讯平台给大家,它就是--Anychat ...
- 2021最新4合1即时通讯IM源码-服务端+PC+WEB+安卓+IOS完整原生源码
介绍: 20214合1即时通讯IM源码 服务端+PC+WEB+安卓+IOS完整原生源码 附完整开发文档+视频搭建教程. 注意:此源码亲测可用,他处有小问题,我们已经修复.任何源码,难免有瑕疵,但不影响 ...
- IM即时通讯软件系统源码安卓、苹果、PC端全开源!
demo软件园每日更新资源,请看到最后就能获取你想要的: 1.<计算机系统结构:解析思路习题>课后答案 "本书是按照全国高等教育自学考试指导委员会制定的计算机及应用专业独立本 ...
- tigase集群配置搭建官方方法-xmpp通讯协议配备tigase集群开发简单省事-哇谷即时通讯IM源码服务-哇谷即时通讯源码
tigase集群配置搭建官方方法-xmpp通讯协议配备tigase集群开发简单省事-哇谷即时通讯IM源码服务 哇谷即时通讯IM云-即时通讯源码-音视频会议-直播-短视频-企业即时通讯办公-聊天app- ...
- 音视频即时通讯的介绍与前景
音视频即时通讯是目前最为时尚.流行的通讯方式.可以实现一对一.一对多.多对多的通讯.而各种各样的即时通讯软件也层出不穷:服务提供商越来越丰富的通讯服务功能.随着社会的发展与网络技术的进步,音视频即时通 ...
- PHP开发的H5即时通讯聊天系统源码 带群聊 可封装APP
H5即时通讯聊天系统源码,源码可用于聊天.交友.客服等平台,可创建群聊,可添加好友,可发朋友圈,运行稳定,支持封装APP. 源码带有详细文档搭建教程,直接使用宝塔搭建即可,前端需要使用工具运行和编译, ...
- 2014年音视频即时通讯市场的割据
当腾讯微信几年下来获取了几亿用户量之后,上个月双11晚上,腾讯微信正式推出"微信电话本"应用,利用网络通信技术,微信一键登录之后使用流量便可与微信好友直接通话,整体交互界面.流程和 ...
- im即时通讯聊天软件,完整的一套即时通讯IM源码
非常完整的一套即时通讯IM源码,包含数据库+服务端源码+服务端部署软件+PC.Web.安卓.IOS完整原生源码. 还附带完整的开发文档和视频搭建教程.一套完整得不能在完整的即时通讯源码了,不管拿来二开 ...
- 每日分享(四合一即时通讯聊天源码APP群聊、私聊、朋友圈)
demo软件园每日更新资源,请看到最后就能获取你想要的: 1.Python整洁编程 完整版PDF Python 与其他语言的不同之处在于,它是一种简单而有深度的语言.因为简单,所以谨慎编写代码要重要得 ...
最新文章
- 我下载的mysql解压后没有安装_mysql 解压版安装配置方法教程
- Docker容器相关命令
- window的文件能在linux,在Linux和Window系统中生成任意大小文件
- Python性能优化的20条建议
- arm--ldm、stm指令解析
- MSP430G2553需要注意的一些参数
- 关于企业管理信息系统
- php安装编译时 configure: error: Cannot find OpenSSL's evp.h
- Climbing Stairs leetcode java
- MVC 特性使用总结
- eks volumn s3_和平精英:SMG战队无缘总决赛,S3前提退场原因一览
- MKNetWorkKit(转载)
- Deadline调度器之(二):细节和使用方法
- paip.java c# .net php python调用c++ c dll so windows api 总结
- 原子结构示意图全部_所有原子结构示意图(1-118)最新元素周期表.pdf
- 平方符号在python中的作用_python平方符号
- mis服务器系统,MIS系统中服务器推技术的实现
- 2021武汉理工大学计算机考研初试经验总结
- 色织物数据集YDFID-1
- CAD数据坐标系统问题