AnyChat的视频会议程序实例详解
程序员文章站
2024-01-08 16:18:34
anychat(全名叫anychat sdk),也叫音视频互动开发平台;是一套跨平台的即时通讯解决方案,基于先进的h.264视频编码标准、aac音频编码标准与p2p技术,整...
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的视频会议程序实例详解的相关内容,先给大家介绍这么多,有问题欢迎各位大侠更贴留言,我会及时和大家联系的,谢谢大家一直以来对网站的支持。