private async Task StartSdkAsync() { if (!_sdkService.IsServerStarted) { _sdkService.SetSdkServerPath(Path.Combine(Environment.CurrentDirectory, "sdk")); IVisualizeShell visualizeShellService = IoC.Get <IVisualizeShell>(); visualizeShellService.StartingSdk(); UserInfo userInfo = IoC.Get <UserInfo>(); AsyncCallbackMsg startResult = await _sdkService.StartServerViaAppKey(userInfo.AppKey, userInfo.OpenId, userInfo.GetNube(), "http://xmeeting.butel.com/nps_x1"); if (startResult.Status != 0) { visualizeShellService.FinishStartingSdk(false, startResult.Message); } else { visualizeShellService.FinishStartingSdk(true, Messages.InfoMeetingSdkStarted); AsyncCallbackMsg setFillModeResult = _sdkService.SetFillMode(0); HasErrorMsg(setFillModeResult.Status.ToString(), Messages.WarningSetFillModeFailed); } //Thread.Sleep(1000); } }
private async Task JoinMeetingAsync() { uint mId; if (!uint.TryParse(MeetingId, out mId)) { HasErrorMsg("-1", Messages.WarningInvalidMeetingNo); return; } int meetingId = (int)mId; if (meetingId == 0) { HasErrorMsg("-1", Messages.WarningInvalidMeetingNo); return; } AsyncCallbackMsg result = await _sdkService.VerifyMeetingExist(meetingId); if (result.Status == 6) { result.Message = Messages.WarningMeetingNoDoesNotExist; } if (HasErrorMsg(result.Status.ToString(), result.Message)) { return; } _sdkService.MeetingId = meetingId; await GotoMeetingViewAsync(); }
private async Task ParticipateOrWatchAsync() { ResponseResult meetingResult = await _bmsService.GetMeetingByLessonId(CurLessonDetail.Id.ToString()); Log.Logger.Debug( $"【get meetingId by lessonId result】:result={meetingResult.Status}, msg={meetingResult.Message}, data={meetingResult.Data}"); if (HasErrorMsg(meetingResult.Status, meetingResult.Message)) { return; } if (meetingResult.Data == null) { HasErrorMsg("-1", Messages.WarningNullDataFromServer); return; } switch (meetingResult.Data.ToString()) { case "-1": HasErrorMsg("-1", Messages.WarningYouNeedCreateAMeeting); //create a meeting and update to database AsyncCallbackMsg createMeetingResult = await _sdkService.CreateInstantMeeting(new Participant[0]); Log.Logger.Debug( $"【create meeting result】:result={createMeetingResult.Status}, msg={createMeetingResult.Message}"); if ( !HasErrorMsg(createMeetingResult.Status.ToString(), createMeetingResult.Message)) { ResponseResult updateResult = await _bmsService.UpdateMeetingId(CurLessonDetail.Id, _sdkService.MeetingId); if (!HasErrorMsg(updateResult.Status, updateResult.Message)) { await GotoMeeting(_sdkService.MeetingId); } } break; case "0": //someone is creating a meeting, just wait HasErrorMsg("-1", Messages.WarningSomeoneIsCreatingAMeeting); break; default: int meetingId = int.Parse(meetingResult.Data.ToString()); await GotoMeeting(meetingId); break; } }
//command handlers private async Task CreateMeetingAsync() { AsyncCallbackMsg createMeetingResult = await _sdkService.CreateInstantMeeting(new Participant[0]); if (HasErrorMsg(createMeetingResult.Status.ToString(), createMeetingResult.Message)) { return; } await GotoMeetingViewAsync(); }
private async Task StartPushLiveStreamAutomatically() { _serverPushLiveService.GetLiveParam(); UserInfo userInfo = IoC.Get <UserInfo>(); AsyncCallbackMsg result = await _serverPushLiveService.StartPushLiveStream( GetStreamLayout(_serverPushLiveService.LiveParam.Width, _serverPushLiveService.LiveParam.Height), userInfo.PushStreamUrl); }
public async Task <AsyncCallbackMsg> StopRecord() { if (RecordId != 0) { Log.Logger.Debug($"【local record live stop begins】:liveId={RecordId}"); AsyncCallbackMsg stopAsynCallResult = await _sdkService.StopRecord(); RecordId = 0; Log.Logger.Debug( $"【local record live stop result】:result={stopAsynCallResult.Status}, msg={stopAsynCallResult.Message}"); return(stopAsynCallResult); } return(AsyncCallbackMsg.GenerateMsg(Messages.WarningNoLiveToStop)); }
public async Task <AsyncCallbackMsg> StopPushLiveStream() { if (LiveId != 0) { Log.Logger.Debug($"【local push live stop begins】:liveId={LiveId}"); AsyncCallbackMsg stopAsynCallResult = await _sdkService.StopLiveStream(LiveId); LiveId = 0; Log.Logger.Debug( $"【local push live stop result】:result={stopAsynCallResult}, msg={stopAsynCallResult.Message}"); return(stopAsynCallResult); } return(AsyncCallbackMsg.GenerateMsg(Messages.WarningNoLiveToStop)); }
public async Task <AsyncCallbackMsg> StartRecord(List <LiveVideoStream> liveVideoStreamInfos) { if (string.IsNullOrEmpty(RecordDirectory)) { return(AsyncCallbackMsg.GenerateMsg(Messages.WarningRecordDirectoryNotSet)); } if (RecordParam.Width == 0 || RecordParam.Height == 0 || RecordParam.VideoBitrate == 0) { return(AsyncCallbackMsg.GenerateMsg(Messages.WarningRecordResolutionNotSet)); } AsyncCallbackMsg result = await _sdkService.SetRecordDirectory(RecordDirectory); AsyncCallbackMsg setRecordParamResult = await _sdkService.SetRecordParameter(RecordParam); string recordFileName = $"{DateTime.Now:yyyy_MM_dd_HH_mm_ss}.mp4"; Log.Logger.Debug( $"【local record live begins】:width={RecordParam.Width}, height={RecordParam.Height}, bitrate={RecordParam.VideoBitrate}, path={Path.Combine(RecordDirectory, recordFileName)}, videos={liveVideoStreamInfos.Count}"); for (int i = 0; i < liveVideoStreamInfos.Count; i++) { Log.Logger.Debug( $"video{i + 1}:x={liveVideoStreamInfos[i].X}, y={liveVideoStreamInfos[i].Y}, width={liveVideoStreamInfos[i].Width}, height={liveVideoStreamInfos[i].Height}"); } AsyncCallbackMsg localRecordResult = await _sdkService.StartRecord(recordFileName, liveVideoStreamInfos.ToArray(), liveVideoStreamInfos.Count); if (localRecordResult.Status == 0) { RecordId = int.Parse(localRecordResult.Data.ToString()); Log.Logger.Debug($"【local record live succeeded】:liveId={RecordId}"); } else { Log.Logger.Error($"【local record live failed】:{localRecordResult.Message}"); } return(localRecordResult); }
public async Task <AsyncCallbackMsg> StartPushLiveStream(List <LiveVideoStream> liveVideoStreamInfos, string pushLiveUrl) { if (string.IsNullOrEmpty(pushLiveUrl)) { return(AsyncCallbackMsg.GenerateMsg(Messages.WarningLivePushLiveUrlNotSet)); } LiveVideoParameter liveParam = LiveParam; liveParam.Url1 = pushLiveUrl; if (liveParam.Width == 0 || liveParam.Height == 0 || liveParam.VideoBitrate == 0) { return(AsyncCallbackMsg.GenerateMsg(Messages.WarningLiveResolutionNotSet)); } Log.Logger.Debug( $"【server push live begins】:width={liveParam.Width}, height={liveParam.Height}, bitrate={liveParam.VideoBitrate}, url={liveParam.Url1}, videos={liveVideoStreamInfos.Count}"); for (int i = 0; i < liveVideoStreamInfos.Count; i++) { Log.Logger.Debug( $"video{i + 1}:x={liveVideoStreamInfos[i].X}, y={liveVideoStreamInfos[i].Y}, width={liveVideoStreamInfos[i].Width}, height={liveVideoStreamInfos[i].Height}"); } AsyncCallbackMsg startLiveStreamResult = await _sdkService.StartLiveStream(liveParam, liveVideoStreamInfos.ToArray(), liveVideoStreamInfos.Count); if (startLiveStreamResult.Status == 0) { LiveId = int.Parse(startLiveStreamResult.Data.ToString()); HasPushLiveSuccessfully = true; Log.Logger.Debug($"【server push live succeeded】:liveId={LiveId}"); } else { HasPushLiveSuccessfully = false; Log.Logger.Error($"【server push live failed】:{startLiveStreamResult.Message}"); } return(startLiveStreamResult); }
public AsyncCallbackMsg RefreshLiveStream(List <LiveVideoStream> openedStreamInfos) { if (LiveId != 0) { Log.Logger.Debug($"【server refresh live begins】:liveId={LiveId}, videos={openedStreamInfos.Count}"); for (int i = 0; i < openedStreamInfos.Count; i++) { Log.Logger.Debug( $"video{i + 1}:x={openedStreamInfos[i].X}, y={openedStreamInfos[i].Y}, width={openedStreamInfos[i].Width}, height={openedStreamInfos[i].Height}"); } AsyncCallbackMsg updateAsynCallResult = _sdkService.UpdateLiveVideoStreams(LiveId, openedStreamInfos.ToArray(), openedStreamInfos.Count); Log.Logger.Debug( $"【server refresh live result】:result={updateAsynCallResult.Status}, msg={updateAsynCallResult.Message}"); return(updateAsynCallResult); } return(AsyncCallbackMsg.GenerateMsg(Messages.WarningNoLiveToRefresh)); }
private async Task StartPushLiveStreamAutomatically() { _serverPushLiveService.GetLiveParam(); UserInfo userInfo = DependencyResolver.Current.GetService <UserInfo>(); AsyncCallbackMsg result = await _serverPushLiveService.StartPushLiveStream( GetStreamLayout(_serverPushLiveService.LiveParam.Width, _serverPushLiveService.LiveParam.Height), userInfo.PushStreamUrl); if (result.Status == 0) { await _serverPushLiveService.RefreshLiveStream( GetStreamLayout(_serverPushLiveService.LiveParam.Width, _serverPushLiveService.LiveParam.Height)); } else { //log error msg } }
private void LoadedAsync() { var participants = _sdkService.GetParticipants(); participants.ForEach(view => { AttendeeItems.Add(new AttendeeItem() { Text = view.PhoneId == _sdkService.SelfPhoneId ? "我" : _userInfos.FirstOrDefault(user => user.GetNube() == view.PhoneId)?.Name, Content = view.IsSpeaking ? CancelSpeaking : SetSpeaking, Id = view.PhoneId, ButtonCommand = view.PhoneId == _sdkService.SelfPhoneId ? new DelegateCommand <AttendeeItem>(async(self) => { switch (self.Content) { case CancelSpeaking: AsyncCallbackMsg stopSpeakMsg = await _sdkService.StopSpeak(); if (stopSpeakMsg.HasError) { self.Content = CancelSpeaking; MessageQueueManager.Instance.AddInfo(stopSpeakMsg.Message); } else { self.Content = SetSpeaking; } break; case SetSpeaking: AsyncCallbackMsg startSpeakMsg = await _sdkService.ApplyToSpeak(); if (startSpeakMsg.HasError) { self.Content = SetSpeaking; MessageQueueManager.Instance.AddInfo(startSpeakMsg.Message); } else { self.Content = CancelSpeaking; } break; } }) : new DelegateCommand <AttendeeItem>((attendeeItem) => { switch (attendeeItem.Content) { case CancelSpeaking: //AsyncCallbackMsg stopCallbackMsg = _sdkService.RequireUserStopSpeak(attendeeItem.Id); int stopSpeakCmd = (int)UiMessage.BannedToSpeak; AsyncCallbackMsg sendStopSpeakMsg = _sdkService.SendMessage(stopSpeakCmd, stopSpeakCmd.ToString(), stopSpeakCmd.ToString().Length, attendeeItem.Id); if (sendStopSpeakMsg.HasError) { attendeeItem.Content = CancelSpeaking; MessageQueueManager.Instance.AddInfo(sendStopSpeakMsg.Message); } else { attendeeItem.Content = SetSpeaking; } break; case SetSpeaking: //AsyncCallbackMsg startCallbackMsg = _sdkService.RequireUserSpeak(attendeeItem.Id); int startSpeakCmd = (int)UiMessage.AllowToSpeak; AsyncCallbackMsg sendStartSpeakMsg = _sdkService.SendMessage(startSpeakCmd, startSpeakCmd.ToString(), startSpeakCmd.ToString().Length, attendeeItem.Id); if (sendStartSpeakMsg.HasError) { attendeeItem.Content = SetSpeaking; MessageQueueManager.Instance.AddInfo(sendStartSpeakMsg.Message); } else { attendeeItem.Content = CancelSpeaking; } break; } }) }); }); //InputSimulatorManager.Instance.Simulator.Keyboard.KeyPress(VirtualKeyCode.TAB); InputSimulatorManager.Instance.Simulator.Keyboard.KeyPress(VirtualKeyCode.TAB); }