// 2013-05-24: GreenRose Created private void InitAllSetting() { AnyChatCoreSDK.SetNotifyMessageCallBack(OnNotifyMessageCallback, 0); AnyChatCoreSDK.SetVideoDataCallBack(AnyChatCoreSDK.PixelFormat.BRAC_PIX_FMT_RGB24, OnVideoDataCallback, 0); // 2014-01-17: GreenRose AnyChatCoreSDK.SetRecordCallBack(OnRecordCallBack, 0); ulong dwFuncMode = AnyChatCoreSDK.BRAC_FUNC_VIDEO_CBDATA | AnyChatCoreSDK.BRAC_FUNC_AUDIO_AUTOPLAY | AnyChatCoreSDK.BRAC_FUNC_CHKDEPENDMODULE | AnyChatCoreSDK.BRAC_FUNC_AUDIO_VOLUMECALC | AnyChatCoreSDK.BRAC_FUNC_NET_SUPPORTUPNP | AnyChatCoreSDK.BRAC_FUNC_FIREWALL_OPEN | AnyChatCoreSDK.BRAC_FUNC_AUDIO_AUTOVOLUME | AnyChatCoreSDK.BRAC_FUNC_CONFIG_LOCALINI; AnyChatCoreSDK.InitSDK(IntPtr.Zero, dwFuncMode); //AnyChatCoreSDK.Connect("demo.anychat.cn", 8906); //AnyChatCoreSDK.Connect("98.126.164.98", 8906); //AnyChatCoreSDK.Connect("192.168.0.2", 8906); AnyChatCoreSDK.Connect(Login._ServerServiceUri, 8906); AnyChatCoreSDK.Login("1", "", 0); AnyChatCoreSDK.EnterRoom(1, "", 0); NotifyMessageHandler = new AnyChatCoreSDK.NotifyMessage_CallBack(NotifyMessageCallbackDelegate); VideoDataHandler = new AnyChatCoreSDK.VideoData_CallBack(VideoDataCallbackDelegate); RecordHandler = new AnyChatCoreSDK.RecordCallBack(RecordDataCallBackDelegate); }
//开始会话 private void VideoCall_SessionStart_Handler(int roomId) { AnyChatCoreSDK.EnterRoom(roomId, "", 0); SoundPlayer Player = new SoundPlayer(); Player.Stream = Properties.Resources.system; Player.Play(); Player.Dispose(); }
private void buttonStart_Click(object sender, RoutedEventArgs e) { // 设置回调函数 AnyChatCoreSDK.SetNotifyMessageCallBack(OnNotifyMessageCallback, 0); AnyChatCoreSDK.SetVideoDataCallBack(AnyChatCoreSDK.PixelFormat.BRAC_PIX_FMT_RGB24, OnVideoDataCallback, 0); ulong dwFuncMode = AnyChatCoreSDK.BRAC_FUNC_VIDEO_CBDATA | AnyChatCoreSDK.BRAC_FUNC_AUDIO_AUTOPLAY | AnyChatCoreSDK.BRAC_FUNC_CHKDEPENDMODULE | AnyChatCoreSDK.BRAC_FUNC_AUDIO_VOLUMECALC | AnyChatCoreSDK.BRAC_FUNC_NET_SUPPORTUPNP | AnyChatCoreSDK.BRAC_FUNC_FIREWALL_OPEN | AnyChatCoreSDK.BRAC_FUNC_AUDIO_AUTOVOLUME | AnyChatCoreSDK.BRAC_FUNC_CONFIG_LOCALINI; // 初始化SDK AnyChatCoreSDK.InitSDK(IntPtr.Zero, dwFuncMode); AnyChatCoreSDK.Connect("demo.anychat.cn", 8906); AnyChatCoreSDK.Login("WFP", "", 0); AnyChatCoreSDK.EnterRoom(1, "", 0); NotifyMessageHandler = new AnyChatCoreSDK.NotifyMessage_CallBack(NotifyMessageCallbackDelegate); VideoDataHandler = new AnyChatCoreSDK.VideoData_CallBack(VideoDataCallbackDelegate); }
protected override void WndProc(ref Message m) { if (m.Msg == ANYCHATAPI.AnyChatCoreSDK.WM_GV_CONNECT) { ///连接 int succed = m.WParam.ToInt32(); if (succed == 1) { Print("连接成功!"); } else { Print("连接失败,错误号:" + m.LParam.ToInt32()); } } else if (m.Msg == ANYCHATAPI.AnyChatCoreSDK.WM_GV_LOGINSYSTEM) { ///登录系统 int userid = m.WParam.ToInt32(); if (m.LParam.ToInt32() == 0) { Print("登录服务器成功,自己的用户编号为:" + userid.ToString()); m_myUserID = userid; AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0); } else { Print("登录服务器失败,代码出错为:" + m.LParam.ToInt32()); } } else if (m.Msg == ANYCHATAPI.AnyChatCoreSDK.WM_GV_ENTERROOM) { ///进入房间 if (m.LParam.ToInt32() == 0) { int roomid = m.WParam.ToInt32(); Print("进入房间成功,房间编号为:" + roomid.ToString()); m_RoomID = roomid; int ret = ANYCHATAPI.AnyChatCoreSDK.SetVideoPos(-1, pictureBox2.Handle, 0, 0, pictureBox2.Width, pictureBox2.Height); ret = ANYCHATAPI.AnyChatCoreSDK.UserCameraControl(-1, true); ret = ANYCHATAPI.AnyChatCoreSDK.UserSpeakControl(-1, true); } else { Print("申请进入房间失败,出错代码为:" + m.LParam.ToInt32()); } } else if (m.Msg == ANYCHATAPI.AnyChatCoreSDK.WM_GV_ONLINEUSER) { ///目前在房间的用户列表 int usrcnt = m.WParam.ToInt32(); Print("在编号为:" + m.LParam.ToInt32() + " 的房间共有" + usrcnt + "位在线用户"); int cnt = 0; ANYCHATAPI.AnyChatCoreSDK.GetOnlineUser(null, ref cnt); int [] userArr = new int[cnt]; ANYCHATAPI.AnyChatCoreSDK.GetOnlineUser(userArr, ref cnt); if (userArr.Length >= 1 && !videoOpenTag) { m_tempUserID = userArr[0]; int ret = ANYCHATAPI.AnyChatCoreSDK.SetVideoPos(userArr[0], pictureBox1.Handle, 0, 0, pictureBox1.Width, pictureBox1.Height); ret = ANYCHATAPI.AnyChatCoreSDK.UserCameraControl(userArr[0], true); ret = ANYCHATAPI.AnyChatCoreSDK.UserSpeakControl(userArr[0], true); if (ret == 0) { videoOpenTag = true; } } } else if (m.Msg == ANYCHATAPI.AnyChatCoreSDK.WM_GV_USERATROOM) { ///新用户加入或退出房间 int userID = m.WParam.ToInt32(); int boEntered = m.LParam.ToInt32(); if (boEntered == 1 && !videoOpenTag) { int ret = -1; m_others.Add(userID); Print("用户编号为:" + userID + " 进入房间"); m_tempUserID = userID; ret = AnyChatCoreSDK.SetVideoPos(userID, this.pictureBox1.Handle, 0, 0, pictureBox1.Width, pictureBox1.Height); ret = AnyChatCoreSDK.UserCameraControl(userID, true); ret = AnyChatCoreSDK.UserSpeakControl(userID, true); if (ret == 0) { videoOpenTag = true; } } else { m_others.Remove(userID); Print("用户编号为:" + userID + " 离开房间"); } } base.WndProc(ref m); }
protected override void WndProc(ref Message m) { if (m.Msg == AnyChatCoreSDK.WM_GV_CONNECT) { ///连接 int succed = m.WParam.ToInt32(); if (succed == 1) { Print("连接成功!"); } else { Print("连接失败,错误号:" + m.LParam.ToInt32()); } } else if (m.Msg == AnyChatCoreSDK.WM_GV_LOGINSYSTEM) { ///登录系统 int userid = m.WParam.ToInt32(); if (m.LParam.ToInt32() == 0) { //Print("登录服务器成功,自己的用户编号为:" + userid.ToString()); Print("登录服务器成功,自己的用户账号为:" + frmLogin.m_UserName); m_myUserID = userid; StringBuilder userName = new StringBuilder(30); int ret = AnyChatCoreSDK.GetUserName(userid, userName, 30); AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0); } else { Print("登录服务器失败,代码出错为:" + m.LParam.ToInt32()); } } else if (m.Msg == AnyChatCoreSDK.WM_GV_ENTERROOM) { ///进入房间 if (m.LParam.ToInt32() == 0) { int roomid = m.WParam.ToInt32(); Print("进入房间成功,房间编号为:" + roomid.ToString()); m_RoomID = roomid; int ret = AnyChatCoreSDK.SetVideoPos(-1, pnl_local.Handle, 0, 0, pnl_local.Width, pnl_local.Height); ret = AnyChatCoreSDK.UserCameraControl(-1, true); ret = AnyChatCoreSDK.UserSpeakControl(-1, true); } else { Print("申请进入房间失败,出错代码为:" + m.LParam.ToInt32()); } } else if (m.Msg == AnyChatCoreSDK.WM_GV_ONLINEUSER) { ///目前在房间的用户列表 int usrcnt = m.WParam.ToInt32(); Print("在编号为:" + m.LParam.ToInt32() + " 的房间共有" + usrcnt + "位在线用户"); Print("当前时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); int cnt = 0; //在线用户数量 AnyChatCoreSDK.GetOnlineUser(null, ref cnt); //获取在线用户数量 int[] userArr = new int[cnt]; //在线用户ID AnyChatCoreSDK.GetOnlineUser(userArr, ref cnt); //获取在线用户ID数组 if (userArr.Length >= 1) { for (int i = 0; i < userArr.Length; i++) { m_others.Add(userArr[i]); //存入在线用户列表中(开发包带的用户在线ID数组) UpdateUserList(userArr[i], i); //添加到在线用户列表(自定义,带用户属性结构) } UpdateOnlineUser(); } else { dgv_onlineuser.Rows.Clear(); DataGridViewRow dgvr = new DataGridViewRow(); dgv_onlineuser.Rows.Add(dgvr); dgvr = dgv_onlineuser.Rows[dgv_onlineuser.Rows.Count - 1]; dgvr.Cells["gvc_username"].Value = "大家"; dgvr.Cells["gvc_audio"].Value = AnyChatCSharpDemo.Properties.Resources.深灰背景; dgvr.Cells["gvc_video"].Value = AnyChatCSharpDemo.Properties.Resources.深灰背景; dgvr.Cells["gvc_character"].Value = AnyChatCSharpDemo.Properties.Resources.深灰背景; dgvr = new DataGridViewRow(); dgv_onlineuser.Rows.Add(dgvr); dgvr = dgv_onlineuser.Rows[dgv_onlineuser.Rows.Count - 1]; dgvr.Cells["gvc_username"].Value = frmLogin.m_UserName;; dgvr.Cells["gvc_character"].Value = AnyChatCSharpDemo.Properties.Resources.主持人_浅灰; dgvr.Cells["gvc_audio"].Value = AnyChatCSharpDemo.Properties.Resources.麦克; dgvr.Cells["gvc_video"].Value = AnyChatCSharpDemo.Properties.Resources.摄像头; } } else if (m.Msg == AnyChatCoreSDK.WM_GV_USERATROOM) { ///新用户加入或退出房间 int userID = m.WParam.ToInt32(); int boEntered = m.LParam.ToInt32(); if (boEntered == 1) { m_others.Add(userID); UpdateUserList(userID, m_others.Count - 1); Print("用户:" + GetUserNameByID(userID) + " 进入房间"); } else { m_others.Remove(userID); for (int i = 0; i < m_MemberItem.Count; i++) { if (m_MemberItem[i].m_UserID == userID) { m_MemberItem.RemoveAt(i); break; } } Print("用户:" + GetUserNameByID(userID) + " 离开房间"); } UpdateOnlineUser(); //更新用户列表 this.Invalidate(); //重绘界面,防止界面假死 } base.WndProc(ref m); }