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的视频会议程序实例详解的相关内容,先给大家介绍这么多,有问题欢迎各位大侠更贴留言,我会及时和大家联系的,谢谢大家一直以来对我们网站的支持。

(0)

相关推荐

  • AnyChat的视频会议程序实例详解

    AnyChat(全名叫Anychat SDK),也叫音视频互动开发平台:是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,整合了佰锐科技在音视频编码.多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量.宽适应性.分布式.模块化的网络音视频互动平台. 可以进行双人或多人的语音实时通话,支持Windows.Web.Android.iOS.Mac.Linux等跨平台通信. 所提供的SDK支持C++.Delphi.Java.C#.VB.object

  • java实现可安装的exe程序实例详解

    java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格式的jar包: 2.通过安装exe4j软件,将导出的.jar格式的文件制作成.exe格式的可执行的文件,(注意:此时的.exe文件只是可以执行,还不能够安装): 3.通过安装Inno setup软件,将可执行的.exe格式的文件..jar格式的文件以及其它需要的文件制作成一个可安装的.exe格式的文

  • C# Winform 自动更新程序实例详解

    本文实例为大家分享了C# Winform 自动更新程序,供大家参考,具体内容如下 第一步:检查更新 检查更新其实无非就是去比较更新包的版本和本地软件版本,如果高则更新.低则不更新.怎么获取版本号方法很多,本案例是获取软件的配置文件. private bool CheckUpdate() { bool result = false; try { string Cfg = TxtRead(exePath "\\Config.txt"); ConfigLocal = JsonConvert.

  • 微信公众号菜单配置微信小程序实例详解

    先提条件是你的公众号版定了小程序 第一种:直接配置     第二张:代码配置 1.进入在线接口调试工具        2.选择自定义菜单 菜单body为json格式: { "button": [ { "type": "miniprogram", "name": "合作", "url": "http://form.mikecrm.com/2xb9aT", "a

  • 基于C#实现的木马程序实例详解

    本文以C#为例讲解木马程序的实现过程.要实现木马服务的程序,主要实现以下几个功能:后台的运行(隐藏技术),控制码的接收与注册表的修改,下面就针对这三方面做介绍: 1.在C#中,建立一个后台服务程序是很容易的,先建立一个新的C#的Windows应用程序,项目名称自定(不过为了隐藏可使用与系统相近的名称,如svchost.exe等),将窗体属性"ShowInTaskbar"属性设为false,让它运行时不会在任务栏中显示,并将属性"Windowstate"属性设为Min

  • C#串口通信程序实例详解

    创建C#串口通信程序之命名空间 System.IO.Ports命名空间中最重用的是SerialPort 类. 创建C#串口通信程序之创建SerialPort 对象 通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程. 我们将要用到的SerialPort 类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULLWriteLine(string):写入输出缓冲Open():打开一个新的串口连接Close():关闭 复制代码 代码如下: SerialP

  • 微信小程序 本地数据存储实例详解

    微信小程序 本地数据存储实例详解 前言 如果您在看此文章之前有过其他程序的开发经验,那一定会知道一般例如安卓或者苹果的原生APP都提供了本地的存储功能,甚至可以使用sqlite数据库来做存储.可是微信的小程序框架基于微信本身,其实际运行环境只是在浏览器里面,所以不会提供那么丰富的数据存储实力.但html5开始已经可以在浏览器里面存储数据,好在微信的小程序给这个功能封装好了,这样我们可以使用数据存储. 每个微信小程序都可以有自己的本地缓存,可以通过 wx.setStorage(wx.setStor

  • 微信小程序 利用css实现遮罩效果实例详解

    微信小程序 利用css实现遮罩效果实例详解 实现效果图: 如图所示,使用css实现小程序的遮罩效果,代码如下 js文件代码: //index.js //获取应用实例 var app = getApp() Page({ data: { flag: false }, a: function(){ this.setData({flag: false}) }, b: function(){ this.setData({flag: true}) } }) wxss文件代码: .b1{position:fi

  • 微信小程序 navbar实例详解

    微信小程序 navbar实例详解 实现效果图: data typeList: [ { name: "日报", id: "1" }, { name: "周报", id: "2" }, { name: "月报", id: "3" }, { name: "目录", id: "4" }] js that.setData({ dateValue: util.

  • Shell执行/调用Java/Jar程序例子的实例详解

    Shell执行/调用Java/Jar程序例子的实例详解 前言: 最近要写一个独立的Java程序去监控Hadoop和Oozie,通过Shell去调用.写代码到现在也4年多了,貌似就从来没在生产环境中写过一个独立的Java程序,不是部署到Tomcat就是直接丢给Hadoop.于是参考Hadoop等开源环境,自己写了一个demo,并且可以通过Ant打包生成可运行的程序.所以这里有三步:Java程序,Shell,Ant      1.首先建立Java程序,由于是例子,所以这里很简单,只是输出传入参数的个

随机推荐