AnyChat的视频会议程序实例详解
AnyChat(全名叫Anychat SDK),也叫音视频互动开发平台;是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准、AAC音频编码标准与P2P技术,整合了佰锐科技在音视频编码、多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量、宽适应性、分布式、模块化的网络音视频互动平台。
可以进行双人或多人的语音实时通话,支持Windows、Web、Android、iOS、Mac、Linux等跨平台通信。
所提供的SDK支持C++、Delphi、Java、C#、VB、object-c等多种语音开发。
AnyChat包括音频视频录制,拍照,服务器录像,文字聊天,文件发送等多种功能。
界面如下
调用流程:
1.在所要监听的类中调用重载WndProc方法,实现windows消息的监听。
/// <summary> /// 重载 /// </summary> /// <param name="m"></param> protected override void WndProc(ref Message m) { if (m.Msg == AnyChatCoreSDK.WM_GV_CONNECT) { //客户端连接服务器,表示是否连接成功 int succed = m.WParam.ToInt32(); //连接服务器成功 if (succed == 1) { //登录服务器(在WndProc中的获取方法回调结果。参数:AnyChatCoreSDK.WM_GV_LOGINSYSTEM) int ret = AnyChatCoreSDK.Login(PublicMembers.g_Name, "", 0); } else { PublicMembers.ShowRightTip("登录失败。错误代码:" + succed, ""); } } else if (m.Msg == AnyChatCoreSDK.WM_GV_LOGINSYSTEM) { //客户端登录系统,wParam(INT)表示自己的用户ID号 int userid = m.WParam.ToInt32(); if (m.LParam.ToInt32() == 0) { m_myUserID = userid; //进入房间(在WndProc中的获取方法回调结果。参数:AnyChatCoreSDK.WM_GV_ENTERROOM) int ret = AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0); } else { MessageBox.Show("登录服务器失败,代码出错为:" + m.LParam.ToInt32(), "警告"); } } else if (m.Msg == AnyChatCoreSDK.WM_GV_ENTERROOM) { //客户端进入房间 if (m.LParam.ToInt32() == 0) { //绑定本机视频窗口 -1代表自己 int ret = AnyChatCoreSDK.SetVideoPos(-1, picLocalVideo.Handle, 0, 0, picLocalVideo.Width, picLocalVideo.Height); //开启本地视频 -1代表自己 ret = AnyChatCoreSDK.UserCameraControl(-1, true); //开启本地声音 -1代表自己 ret = AnyChatCoreSDK.UserSpeakControl(-1, true); } else { MessageBox.Show("申请进入房间失败,出错代码为:" + m.LParam.ToInt32(), "警告"); } } else if (m.Msg == AnyChatCoreSDK.WM_GV_ONLINEUSER) { //收到当前房间的在线用户信息,进入房间后触发一次 int usrcnt = m.WParam.ToInt32(); int cnt = 0;//在线用户数量 AnyChatCoreSDK.GetOnlineUser(null, ref cnt);//获取在线用户数量 int[] userArr = new int[cnt];//在线用户ID AnyChatCoreSDK.GetOnlineUser(userArr, ref cnt);//获取在线用户ID数组 } else if (m.Msg == AnyChatCoreSDK.WM_GV_LINKCLOSE) { //客户端掉线处理 } else if (m.Msg == AnyChatCoreSDK.WM_GV_USERATROOM) { //用户进入(离开)房间,wParam(INT)表示用户ID号、 //用户ID int userID = m.WParam.ToInt32(); //发生状态 int boEntered = m.LParam.ToInt32(); if (boEntered == 1) { //进入房间 m_others.Add(userID); StartVideo(userID); } else { //退出房间 m_others.Remove(userID); EndVideo(userID); } } base.WndProc(ref m); }
2.初始化AnyChat的SDK
//设置回调函数 SystemSetting.Text_OnReceive = new TextReceivedHandler(Received_CallBack);//文本回调涵数 SystemSetting.TransBuffer_OnReceive = new TransBufferReceivedHandler(Received_TransBuffer);//透明通道传输回调 SystemSetting.TransFile_OnReceive = new TransFileReceivedHandler(Received_TransFile);//文件传输回调 SystemSetting.TransRecord_OnReceive = new TransRecordHandler(File_CallBack);//拍照录像回调函数 //初始化 SystemSetting.Init(this.Handle); //设置内核参数 设置保存路径 int ret = 0; ret = AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_RECORD_TMPDIR, Application.StartupPath, Application.StartupPath.Length); ret = AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_SNAPSHOT_TMPDIR, Application.StartupPath, Application.StartupPath.Length);
3.连接AnyChat服务器。使用AnyChat功能必须先连接并登录AnyChat服务器。执行连接操作后会触发windows消息回调 AnyChatCoreSDK.WM_GV_CONNECT
//登录AnyChat (IP从配置文件中获取) string IP = XmlHelper.GetXmlAttribute(PublicMembers.Config, "//Configuration//IP", "value").Value; //连接服务器(在WndProc中的获取方法回调结果。参数:AnyChatCoreSDK.WM_GV_CONNECT) ret = AnyChatCoreSDK.Connect(IP, 8906);
4.登录AnyChat服务器。执行连接操作后会触发windows消息回调 AnyChatCoreSDK.WM_GV_LOGINSYSTEM
//登录服务器(在WndProc中的获取方法回调结果。参数:AnyChatCoreSDK.WM_GV_LOGINSYSTEM) int ret = AnyChatCoreSDK.Login(PublicMembers.g_Name, "", 0);
5.服务器登录成功后进入指定房间,只有在同一个房间内的用户才可以进行视频音频交互。
//进入房间(在WndProc中的获取方法回调结果。参数:AnyChatCoreSDK.WM_GV_ENTERROOM) int ret = AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0);
6.打开,关闭音频视频
//绑定本机视频窗口 -1代表自己,通过指定userId来绑定视频窗口 int ret = AnyChatCoreSDK.SetVideoPos(-1, picLocalVideo.Handle, 0, 0, picLocalVideo.Width, picLocalVideo.Height); //开启本地视频 -1代表自己 ret = AnyChatCoreSDK.UserCameraControl(-1, true); //开启本地声音 -1代表自己 ret = AnyChatCoreSDK.UserSpeakControl(-1, true);
7.发送文件,文字,录制等操作
//发送文字 int ret = AnyChatCoreSDK.SendTextMessage(-1, true, text, length); //发送文件 filepath:文件路径 int taskId = 0; int flag = AnyChatCoreSDK.TransFile(userId, filepath, 1, 0, 0, ref taskId); //开启声音 int ret = AnyChatCoreSDK.UserSpeakControl(userId, true); //关闭声音 int ret = AnyChatCoreSDK.UserSpeakControl(userId, false); //开启视频 int ret = AnyChatCoreSDK.UserCameraControl(userId, true); //关闭视频 int ret = AnyChatCoreSDK.UserCameraControl(userId, false); //开始录像 ulong flag = 0;//0为录制视频 1为录制音频 int ret = AnyChatCoreSDK.StreamRecordCtrl(userId, true, flag, 0); //停止录像 ulong flag = 0;//0为录制视频 1为录制音频 int ret = AnyChatCoreSDK.StreamRecordCtrl(userId, false, flag, 0); //拍照 AnyChatCoreSDK.SnapShot(userId, 1, 1);
关于AnyChat的视频会议程序实例详解的相关内容,先给大家介绍这么多,有问题欢迎各位大侠更贴留言,我会及时和大家联系的,谢谢大家一直以来对猪先飞网站的支持。
相关文章
- 腾讯视频怎么放到自己的网页上?这个问题是一个基本的问题,要把腾讯视频放到自己的网页有许多的办法,当然一般情况就是直接使用它们的网页代码了,如果你要下载资源再放到...2016-09-20
- 这篇文章主要介绍了市面上短视频(douyin)"去水印"的工具原来是这样实现的,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-30
基于jQuery的网页影音播放器jPlayer的基本使用教程
这篇文章主要介绍了基于jQuery的网页影音播放器jPlayer的基本使用教程,文中的示例主要针对其播放音频文件的用法,需要的朋友可以参考下...2016-03-10- 这篇文章主要介绍了vue项目中播放rtmp视频文件流 ,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-17
- 这篇文章主要介绍了Opencv python 图片生成视频的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-18
- 这篇文章主要介绍了Python提取视频中图片的示例,分别按帧和按秒提取,帮助大家利用python处理视频,获取素材,感兴趣的朋友可以了解下...2020-10-23
Python+uiautomator2实现自动刷抖音视频功能
这篇文章主要介绍了Python+uiautomator2实现自动刷抖音视频功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-29- 手机观看视频的时候,有些工作需要沟通,或者参与抢购活动,同时为了不错过视频精彩片段,会选择画中画模式,这篇文章主要为大家详细介绍了Android实现视频的画中画功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-26
- 最近接触了个项目,需要把多个文件合成一个视频,本文主要使用Python把多个MP4合成视频,感兴趣的可以了解一下...2021-07-16
- 这篇文章主要介绍了html5中嵌入视频自动播放的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-30
- 这篇文章主要为大家详细介绍了OpenCV获取视频的每一帧,并保存为.jpg图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- 这篇文章主要为大家详细介绍了C# winform循环播放多个视频的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
python 使用tkinter+you-get实现视频下载器
这篇文章主要介绍了python 使用tkinter+you-get实现视频下载器,帮助大家方便的下载视频资源,感兴趣的朋友可以了解下...2020-11-18- 这篇文章主要介绍了通过JS来实现简单控制视频播放倍速,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-18
- 代码如下 复制代码 function bigendian2int($byte_word, $signed = false) { $int_value = 0; $byte_wordlen = str...2016-11-25
- 这篇文章主要为大家详细介绍了C# WebApi+Webrtc局域网音视频通话实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-07-26
- 一是通过调用window media player进行播放,二是通过调用replayer进行播放,三是通过调用flashplayer进行播放...2021-09-22
- 这篇文章主要介绍了Matlab制作视频并转换成gif动态图的两种方法,第一种方法使用movie(f)直接取生成AVI视频文件,相对来说比较简单,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C#获取视频某一帧的缩略图的方法,涉及执行CMD命令及针对视频文件操作的技巧,具有一定的实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要给大家介绍了关于iOS视频中断后台音乐播放的处理方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-12-08