private void GetSetting() { int retCode = 0; int streamIdx = Int32.Parse((comboBox_videoDeviceList.SelectedItem as ComboBoxItem).Value.ToString()); //streamIdx = streamIdx + 1; int videoBitrate = 0; if (streamIdx == 100) { retCode = AnyChatCoreSDK.QueryUserState(-1, AnyChatCoreSDK.BRAC_USERSTATE_VIDEOBITRATE, ref videoBitrate, sizeof(int)); } else { retCode = AnyChatCoreSDK.GetUserStreamInfo(-1, streamIdx, AnyChatCoreSDK.BRAC_STREAMINFO_VIDEOBITRATE, ref videoBitrate, sizeof(int)); } for (int idx = 0; idx < comboBox_VideoBitrate.Items.Count; idx++) { if ((videoBitrate >= Int32.Parse((comboBox_VideoBitrate.Items[idx] as ComboBoxItem).Value.ToString())) && (videoBitrate <= Int32.Parse((comboBox_VideoBitrate.Items[idx + 1] as ComboBoxItem).Value.ToString()))) { comboBox_VideoBitrate.SelectedIndex = idx; break; } } //分辨率 int videoWidth = 0; int videoHeigth = 0; retCode = AnyChatCoreSDK.GetUserStreamInfo(-1, streamIdx, AnyChatCoreSDK.BRAC_STREAMINFO_VIDEOWIDTH, ref videoWidth, sizeof(int)); retCode = AnyChatCoreSDK.GetUserStreamInfo(-1, streamIdx, AnyChatCoreSDK.BRAC_STREAMINFO_VIDEOHEIGHT, ref videoHeigth, sizeof(int)); string resolution = videoWidth.ToString() + "x" + videoHeigth; lblVideoResolution.Text = "(当前分辨率: "+ resolution + ")"; for (int idx = 0; idx < comboBox_VideoResolution.Items.Count; idx++) { if (resolution == (comboBox_VideoResolution.Items[idx] as ComboBoxItem).Text.ToString()) { comboBox_VideoResolution.SelectedIndex = idx; break; } } //帧率 int videoFPS = 0; //videoFPS = Int32.Parse((comboBox_VideoFPS.SelectedItem as ComboBoxItem).Value.ToString()); retCode = AnyChatCoreSDK.GetUserStreamInfo(-1, streamIdx, AnyChatCoreSDK.BRAC_STREAMINFO_VIDEOFPS, ref videoFPS, sizeof(int)); for (int idx = 0; idx < comboBox_VideoFPS.Items.Count; idx++) { if (videoFPS.ToString() == (comboBox_VideoFPS.Items[idx] as ComboBoxItem).Value.ToString()) { comboBox_VideoFPS.SelectedIndex = idx; break; } } }
// 打开远程用户的音频、视频 public void OpenRemoteUserVideo() { if (g_otherUserId != -1) { return; } // 获取当前房间用户列表 int usercount = 0; AnyChatCoreSDK.GetOnlineUser(null, ref usercount); if (usercount > 0) { int[] useridarray = new int[usercount]; AnyChatCoreSDK.GetOnlineUser(useridarray, ref usercount); for (int i = 0; i < usercount; i++) { // 判断该用户的视频是否已打开 int usercamerastatus = 0; if (AnyChatCoreSDK.QueryUserState(useridarray[i], AnyChatCoreSDK.BRAC_USERSTATE_CAMERA, ref usercamerastatus, sizeof(int)) != 0) { continue; } if (usercamerastatus == 2) { AnyChatCoreSDK.UserSpeakControl(useridarray[i], true); AnyChatCoreSDK.UserCameraControl(useridarray[i], true); g_otherUserId = useridarray[i]; break; } } } }
/// <summary> /// 获取在线好友数据 /// </summary> public void getOnlineFriendInfos() { users.Clear(); InitUserPanl(); UserInfo selfUserItem = new UserInfo(); selfUserItem.Id = m_UserId; selfUserItem.Name = m_UserName; byte[] ipByte = new byte[100]; AnyChatCoreSDK.QueryUserState(selfUserItem.Id, AnyChatCoreSDK.BRAC_USERSTATE_INTERNETIP, ref ipByte[0], 20); selfUserItem.Ip = byteToString(ipByte); AddUser(selfUserItem); int num = 0; AnyChatCoreSDK.GetUserFriends(null, ref num); int[] friendIds = new int[num]; AnyChatCoreSDK.GetUserFriends(friendIds, ref num); for (int i = 0; i < friendIds.Length; i++) { int onlineStatus = 0; int friendId = friendIds[i]; AnyChatCoreSDK.GetFriendStatus(friendId, ref onlineStatus); Log.SetLog("GetFriendStatus: " + "用户id:" + friendId + "在线状态:" + onlineStatus); if (onlineStatus == USER_OFFLINE) { continue; } UserInfo userItem = new UserInfo(); int lenth = 30; userItem.Id = friendId; byte[] userNameByte = new byte[255]; AnyChatCoreSDK.GetUserInfo(friendId, USERDATA_USERNAME, ref userNameByte[0], lenth); string userName = byteToString(userNameByte); userItem.Name = userName; byte[] userAddressIPByte = new byte[100]; AnyChatCoreSDK.GetUserInfo(friendId, USERDATA_USERADRESSIP, ref userAddressIPByte[0], lenth); string userIp = byteToString(userAddressIPByte); userItem.Ip = userIp; bool ishave = false; foreach (UserInfo u in users) { if (u.Id == userItem.Id) { ishave = true; break; } } if (!ishave) { users.Add(userItem); } AddUser(userItem); } }
int intTuserSpeakValue = 0; //被动方音量 private void timer_speak_Tick(object sender, EventArgs e) { if (ConversationMode != null) { int value = 0; AnyChatCoreSDK.QueryUserState(ConversationMode.SuserId, AnyChatCoreSDK.BRAC_USERSTATE_SPEAKVOLUME, ref value, sizeof(int)); intSuserSpeakValue = value; AnyChatCoreSDK.QueryUserState(ConversationMode.TuserId, AnyChatCoreSDK.BRAC_USERSTATE_SPEAKVOLUME, ref value, sizeof(int)); intTuserSpeakValue = value; pic_tuserSound.Invalidate(); pic_suserSound.Invalidate(); } }
// 打开远程用户的音频、视频 public void OpenRemoteUserVideo() { if (g_otherUserId != -1) { return; } // 获取当前房间用户列表 int usercount = 0; AnyChatCoreSDK.GetOnlineUser(null, ref usercount); if (usercount > 0) { int[] useridarray = new int[usercount]; AnyChatCoreSDK.GetOnlineUser(useridarray, ref usercount); for (int i = 0; i < usercount; i++) { // 判断该用户的视频是否已打开 int usercamerastatus = 0; if (AnyChatCoreSDK.QueryUserState(useridarray[i], AnyChatCoreSDK.BRAC_USERSTATE_CAMERA, ref usercamerastatus, sizeof(int)) != 0) { continue; } if (usercamerastatus == 2) { g_otherUserId = useridarray[i]; //获取控件的句柄 IntPtr mHandle = ((HwndSource)PresentationSource.FromVisual(this.remoteVideoImage)).Handle; //获取控件的位置 Window window = Window.GetWindow(this.remoteVideoImage); Point point = this.remoteVideoImage.TransformToAncestor(window).Transform(new Point(0, 0)); //显示视频 AnyChatCoreSDK.SetVideoPos(g_otherUserId, mHandle, (int)point.X, (int)point.Y, (int)(this.remoteVideoImage.Width + point.X), (int)(this.remoteVideoImage.Height + point.Y)); AnyChatCoreSDK.UserSpeakControl(g_otherUserId, true); AnyChatCoreSDK.UserCameraControl(g_otherUserId, true); break; } } } }
private void tmr_receivefile_Tick(object sender, EventArgs e) { //每秒更新视频码率 int m_AVInfoval = 0; int avret = AnyChatCoreSDK.QueryUserState(-1, AnyChatCoreSDK.BRAC_USERSTATE_VIDEOBITRATE, ref m_AVInfoval, sizeof(int)); string m_AVSpeed = m_AVInfoval.ToString() + "B/S"; if (m_AVInfoval > 1000) { try { double m_AVTemp = (double)m_AVInfoval / 1000.0; m_AVSpeed = m_AVTemp.ToString(); m_AVSpeed = m_AVSpeed.Substring(0, m_AVSpeed.Length - 2) + "KB/S"; } catch { } } lbl_v_speed.BeginInvoke(new AsyncTransSetFileProgress(SetVideoSpeed), m_AVSpeed); //每秒更新音频码率 avret = AnyChatCoreSDK.QueryUserState(-1, AnyChatCoreSDK.BRAC_USERSTATE_AUDIOBITRATE, ref m_AVInfoval, sizeof(int)); m_AVSpeed = m_AVInfoval.ToString() + "B/S"; if (m_AVInfoval > 1000) { try { double m_AVTemp = (double)m_AVInfoval / 1000.0; m_AVSpeed = m_AVTemp.ToString(); m_AVSpeed = m_AVSpeed.Substring(0, m_AVSpeed.Length - 2) + "KB/S"; } catch { } } lbl_a_speed.BeginInvoke(new AsyncTransSetFileProgress(SetAudioSpeed), m_AVSpeed); //StringBuilder m_InfoVal = new StringBuilder(300); //int ret = AnyChatCoreSDK.QueryTransTaskInfo(m_ReceiveUserID, m_ReceiveTaskID, 1, m_InfoVal, 300); //double m_InfoVal = 0.0; //int ret = AnyChatCoreSDK.QueryTransTaskInfo(m_ReceiveUserID, m_ReceiveTaskID, 1, ref m_InfoVal, 300); //lbl_progress.BeginInvoke(new AsyncTransSetFileProgress(SetTransFileProgress), ret.ToString()+":"+m_InfoVal.ToString()); //int m_InfoVal = 0; double m_InfoVal = 0.0; int ret = AnyChatCoreSDK.QueryTransTaskInfo(m_ReceiveUserID, m_ReceiveTaskID, 1, ref m_InfoVal, sizeof(double)); if (ret != 0) { return; } string m_BFB = m_InfoVal.ToString(); try { m_BFB = m_BFB.Substring(0, m_BFB.IndexOf(".") + 3); } catch { } m_BFB += "%"; lbl_progress.BeginInvoke(new AsyncTransSetFileProgress(SetTransFileProgress), "进度:" + m_BFB); int m_InfoValSpeed = 1; int rett = AnyChatCoreSDK.QueryTransTaskInfo(m_ReceiveUserID, m_ReceiveTaskID, 2, ref m_InfoValSpeed, sizeof(int)); string m_VSpeed = ""; double m_Templv = 0.0; m_VSpeed = m_InfoValSpeed.ToString() + "B/S"; if (m_InfoValSpeed > 1000) { m_Templv = (double)m_InfoValSpeed / 1000.0; m_VSpeed = m_Templv.ToString(); try { m_VSpeed = m_VSpeed.Substring(0, m_VSpeed.IndexOf(".") + 2); } catch { } m_VSpeed = m_VSpeed + "KB/S"; } if (m_InfoValSpeed > 1000000) { m_Templv = (double)m_InfoValSpeed / 1000000.0; m_VSpeed = m_Templv.ToString(); try { m_VSpeed = m_VSpeed.Substring(0, m_VSpeed.IndexOf(".") + 2); } catch { } m_VSpeed = m_VSpeed + "MB/S"; } lbl_speed.BeginInvoke(new AsyncTransSetFileProgress(SetTransFileSpeed), "速率:" + m_VSpeed); }