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

 更新时间:2016年01月08日 09:05:05   作者:尛丶MaTure  
AnyChat是一款跨平台的音视频解决方案。通过本篇文章给大家介绍AnyChat的视频会议程序,涉及到anychat相关知识,对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的视频会议程序实例详解的相关内容,先给大家介绍这么多,有问题欢迎各位大侠更贴留言,我会及时和大家联系的,谢谢大家一直以来对脚本之家网站的支持。

相关文章

  • C# Console利用mspaint打开图像并保存的方法

    C# Console利用mspaint打开图像并保存的方法

    这篇文章主要介绍了C# Console利用mspaint打开图像并保存的方法,涉及C#调用画图板操作图片的相关技巧,需要的朋友可以参考下
    2016-01-01
  • C#(4.0)不常见的语法

    C#(4.0)不常见的语法

    今天工作遇到4.0新增语法 不解 请教 遂知,简单的整理下,需要的朋友可以参考下
    2012-02-02
  • 详解C#如何利用爬虫技术实现快捷租房

    详解C#如何利用爬虫技术实现快捷租房

    做为一个码农,大部分都集中在一二线城市,所以租房也就无可避免,面对如今五花八门的租房信息,往往很难找到合适的房子。本文教你如何利用爬虫技术实现快捷租房,感兴趣的可以了解一下
    2022-09-09
  • CDMA 猫用AT命令发中文短信(C#)

    CDMA 猫用AT命令发中文短信(C#)

    CDMA猫连PDU都不支持,只能发文本短信。而且发中文短信居然是UNICODE,无法在超级终端里输入。只能写程序。网上这个问题谈论地比较多,做起来比较累,还偶尔会出乱码。还是将C#的成功代码帖一下吧。
    2009-08-08
  • C#如何利用结构体对固定格式数据进行解析

    C#如何利用结构体对固定格式数据进行解析

    这篇文章主要为大家详细介绍了C#利用结构体对固定格式数据进行解析,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 使用C#解决Excel自动适应列宽的问题

    使用C#解决Excel自动适应列宽的问题

    这篇文章主要介绍了如何使用C#解决Excel自动适应列宽的问题,通过 COM 操作 Excel 自动适应列宽的方法是 AutoFit 方法,该方法适于自动适应列宽或行高,文中通过代码示例和图文讲解的非常详细,需要的朋友可以参考下
    2024-06-06
  • DevExpress实现TreeList按条件隐藏节点CheckBox的方法

    DevExpress实现TreeList按条件隐藏节点CheckBox的方法

    这篇文章主要介绍了DevExpress实现TreeList按条件隐藏节点CheckBox的方法,需要的朋友可以参考下
    2014-08-08
  • C#日期转换函数分享

    C#日期转换函数分享

    这篇文章介绍了C#日期转换函数,有需要的朋友可以参考一下
    2013-10-10
  • c#中list.FindAll与for循环的性能对比总结

    c#中list.FindAll与for循环的性能对比总结

    这篇文章主要给大家总结介绍了关于c#中list.FindAll与for循环的性能,文中通过详细的示例代码给大家介绍了这两者之间的性能,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
    2017-10-10
  • C#实现读取二维数组集合并输出到Word预设表格

    C#实现读取二维数组集合并输出到Word预设表格

    这篇文章主要为大家详细介绍了如何使用C#实现读取二维数组集合并输出到Word预设表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03

最新评论