void UserPublishMicAudio(UserPublishModel model) { Participant participant; if (_participants.TryGetValue(model.AccountId, out participant)) { StreamResource <IStreamParameter> userPublishStreamResource = new StreamResource <IStreamParameter>(); SubscribeMicStreamParameter parameter = StreamParameterProviders.GetParameter <SubscribeMicStreamParameter>(string.Empty); userPublishStreamResource.MediaType = MediaType.Microphone; userPublishStreamResource.ResourceId = model.ResourceId; userPublishStreamResource.SyncId = model.SyncId; userPublishStreamResource.StreamParameter = parameter; participant.Resources.Add(userPublishStreamResource); if (_autoSubscribe) { MeetingResult result = Subscribe(model.AccountId, model.ResourceId, MediaType.Microphone); if (result.StatusCode == 0) { userPublishStreamResource.IsUsed = true; } } } }
private void GetJoinMeetingInfo(int meetingId) { MeetingResult <JoinMeetingModel> joinMeetingResult = _meetingSdkWrapper.GetJoinMeetingInfo(meetingId); if (joinMeetingResult.StatusCode == 0) { foreach (var speakerInfo in joinMeetingResult.Result.MeetingSpeakerModels) { Participant participant; if (_participants.TryGetValue(speakerInfo.Account.AccountId, out participant)) { foreach (var streamInfo in speakerInfo.MeetingUserStreamInfos) { StreamResource <IStreamParameter> stream = new StreamResource <IStreamParameter>() { MediaType = (MediaType)streamInfo.MediaType, ResourceId = streamInfo.ResourceId, SyncId = streamInfo.SyncGroupId, }; participant.Resources.Add(stream); } } } } }
public MeetingResult Unsubscribe(int accountId, int resourceId, MediaType mediaType) { UserUnpublishModel userUnpublishModel = new UserUnpublishModel() { AccountId = accountId, ResourceId = resourceId, }; MeetingResult result = _meetingSdkWrapper.Unsubscribe(userUnpublishModel); if (result.StatusCode == 0) { Participant participant; if (_participants.TryGetValue(accountId, out participant)) { var resource = participant.Resources.SingleOrDefault(m => m.ResourceId == resourceId); if (resource != null) { resource.IsUsed = false; } } VideoBoxType videoBoxType; if (mediaType.TryConvertVideoBoxType(out videoBoxType)) { VideoBoxManager.Release( accountId, videoBoxType == VideoBoxType.Camera ? VideoBoxType.None : videoBoxType); } } LayoutChanged(mediaType); return(result); }
public MeetingResult GetMeetingById(int meetingId) { IMeetingMaster result = _meetingRetriever.GetMeetingByMeetingId(meetingId); MeetingResult meeting = new MeetingResult(); meeting.AgendaURL = result.AgendaURL; meeting.IsAVRequired = result.IsAVRequired; meeting.IsPhoneRequired = result.IsPhoneRequired; meeting.IsVideoConfRequired = result.IsVideoConfRequired; meeting.PreferredLocation = _locationRetriever.GetLocationByLocationId(result.PreferredLocationId).LocationName; meeting.ActualLocation = _locationRetriever.GetLocationByLocationId(result.ActualLocationId).LocationName; meeting.MeetingDesc = result.MeetingDesc; meeting.MeetingEndTime = result.MeetingEndTime; meeting.MeetingPriority = result.MeetingPriority;//todo meeting.MeetingStartTime = result.MeetingStartTime; meeting.MinutesURL = result.MinutesURL; meeting.PhoneBridge = result.PhoneBridge; meeting.PhoneBridgeAccessCode = result.PhoneBridgeAccessCode; meeting.ScheduledBy = _userRetriever.GetUserFullNameByUserId(result.MeetingCalledBy); meeting.Title = result.MeetingDesc; meeting.MeetingDuration = result.MeetingDuration; return(meeting); }
public List <MeetingResult> GetAllMeetings() { List <IMeetingMaster> results = _meetingRetriever.GetAllMeetings(); List <MeetingResult> meetings = new List <MeetingResult>(); foreach (IMeetingMaster result in results) { MeetingResult meeting = new MeetingResult(); meeting.AgendaURL = result.AgendaURL; meeting.IsAVRequired = result.IsAVRequired; meeting.IsPhoneRequired = result.IsPhoneRequired; meeting.IsVideoConfRequired = result.IsVideoConfRequired; meeting.PreferredLocation = _locationRetriever.GetLocationByLocationId(result.PreferredLocationId).LocationName; meeting.ActualLocation = _locationRetriever.GetLocationByLocationId(result.ActualLocationId).LocationName; meeting.MeetingDesc = result.MeetingDesc; meeting.MeetingEndTime = result.MeetingEndTime; meeting.MeetingPriority = result.MeetingPriority;//todo meeting.MeetingStartTime = result.MeetingStartTime; meeting.MinutesURL = result.MinutesURL; meeting.PhoneBridge = result.PhoneBridge; meeting.PhoneBridgeAccessCode = result.PhoneBridgeAccessCode; meeting.ScheduledBy = _userRetriever.GetUserFullNameByUserId(result.MeetingCalledBy); meeting.Title = result.MeetingDesc; meetings.Add(meeting); } return(meetings); }
private void AccountResourceRemovedEventHandler(VideoBox videoBox) { lock (_syncRoot) { if (ExtendedView == null) { return; } ExtendedView.Dispatcher.BeginInvoke(new System.Action(() => { if (ExtendedView == null) { return; } var tobeRemovedItem = _items[videoBox.Name]; if (tobeRemovedItem != null && tobeRemovedItem.AccountResource != null) { MeetingResult meetingResult = _meetingSdkAgent.RemoveDisplayWindow(tobeRemovedItem.AccountResource.AccountModel.AccountId, tobeRemovedItem.AccountResource.ResourceId, tobeRemovedItem.Handle, 0, 0); System.Console.WriteLine($"RemoveDisplayWindow:statusCode={meetingResult.StatusCode}, msg={meetingResult.Message}, accountId={tobeRemovedItem.AccountResource.AccountModel.AccountId}"); tobeRemovedItem.AccountResource = null; _items[videoBox.Name] = tobeRemovedItem; } LayoutChange(LayoutRendererStore.CurrentLayoutRenderType); _eventAggregator.GetEvent <ExtendedViewsShowedEvent>().Publish(); })); } // 同步画面资源信息。 }
protected void lstVwMeeting_ItemDataBound(object sender, ListViewItemEventArgs e) { if (e.Item.ItemType == ListViewItemType.DataItem) { MeetingResult currentMeeting = ((ListViewDataItem)e.Item).DataItem as MeetingResult; ucMeetingDisplay currentMeetingDisplay = e.Item.FindControl("UCMeeting") as ucMeetingDisplay; currentMeetingDisplay.Initialize(currentMeeting); } }
private void UserStartSpeakEventHandler(MeetingResult <UserSpeakModel> obj) { var attendeeItem = AttendeeItems.FirstOrDefault(attendee => attendee.Id == obj.Result.Account.AccountId.ToString()); if (attendeeItem != null) { attendeeItem.Content = CancelSpeaking; } }
public void Initialize(MeetingResult meeting) { if (meeting != null) { lblMeetingLocation.Text = meeting.ActualLocation; lblMeetingTitle.Text = meeting.Title; lblProjectedDate.Text = meeting.Date; lblScheduledBy.Text = meeting.ScheduledBy; } }
public MeetingResult StartMp4Record(VideoStreamModel[] videoStreamModels, AudioStreamModel[] audioStreamModels) { if (string.IsNullOrEmpty(RecordDirectory) || !Directory.Exists(RecordDirectory)) { return(new MeetingResult() { Message = MessageManager.RecordDirectoryNotSet, StatusCode = -1, }); } MeetingResult <int> publishLiveResult = _meetingService.PublishLiveStream(RecordParam); if (publishLiveResult.StatusCode != 0) { return(publishLiveResult); } RecordId = publishLiveResult.Result; MeetingResult updateVideoResult = _meetingService.UpdateLiveStreamVideoInfo(publishLiveResult.Result, videoStreamModels); MeetingResult updateAudioResult = _meetingService.UpdateLiveStreamAudioInfo(publishLiveResult.Result, audioStreamModels); string filename = Path.Combine(RecordDirectory, DateTime.Now.ToString("yyyy-MM-dd_HH_mm_ss") + ".mp4"); MeetingResult startRecordResult = _meetingService.StartMp4Record(publishLiveResult.Result, filename); MeetingResult mergedResult = new MeetingResult() { Message = "录制成功!", StatusCode = 0 }; if (updateVideoResult.StatusCode != 0) { mergedResult.StatusCode = -1; mergedResult.Message = updateVideoResult.Message; } if (updateAudioResult.StatusCode != 0) { mergedResult.StatusCode = -1; mergedResult.Message += $" {updateAudioResult.Message}"; } if (startRecordResult.StatusCode != 0) { mergedResult.StatusCode = -1; mergedResult.Message += $" {startRecordResult.Message}"; } return(mergedResult); }
public static MeetingResult <T> Error <T>(string message) { var result = new MeetingResult <T> { Result = default(T), StatusCode = -9999, Message = message }; return(result); }
protected void lstVwMeeting_ItemDataBound(object sender, ListViewItemEventArgs e) { if (e.Item.ItemType == ListViewItemType.DataItem) { MeetingResult currentMeeting = ((ListViewDataItem)e.Item).DataItem as MeetingResult; ucMyMeetingDisplay currentMeetingDisplay = e.Item.FindControl("UCMeeting") as ucMyMeetingDisplay; (e.Item.FindControl("hdnFieldMeetingId") as HiddenField).Value = currentMeeting.MeetingId.ToString(); (e.Item.FindControl("hdnFieldMeetingCalledBy") as HiddenField).Value = currentMeeting.MeetingCalledBy.ToString(); currentMeetingDisplay.Initialize(currentMeeting); } }
public string IsVideoAudioSettingsValid() { MeetingResult <IList <VideoDeviceModel> > videoDeviceResult = _meetingSdkAgent.GetVideoDevices(); MeetingResult <IList <string> > micResult = _meetingSdkAgent.GetMicrophones(); MeetingResult <IList <string> > speakerResult = _meetingSdkAgent.GetLoudSpeakers(); IDeviceNameAccessor deviceNameAccessor = IoC.Get <IDeviceNameAccessor>(); IEnumerable <string> cameraDeviceName; if (videoDeviceResult.Result.Count == 0 || string.IsNullOrEmpty(_configManager.MainVideoInfo?.VideoDevice) || !deviceNameAccessor.TryGetName(DeviceName.Camera, new Func <DeviceName, bool>(d => { return(d.Option == "first"); }), out cameraDeviceName) || !videoDeviceResult.Result.Any(vdm => vdm.DeviceName == cameraDeviceName.FirstOrDefault())) { return(Messages.WarningNoCamera); } if (_configManager.MainVideoInfo?.DisplayWidth == 0 || _configManager.MainVideoInfo?.DisplayHeight == 0 || _configManager.MainVideoInfo?.VideoBitRate == 0) { return(Messages.WarningWrongVideoParams); } IEnumerable <string> micDeviceName; if (micResult.Result.Count == 0 || string.IsNullOrEmpty(_configManager.AudioInfo?.AudioSammpleDevice) || !deviceNameAccessor.TryGetName(DeviceName.Microphone, new Func <DeviceName, bool>(d => { return(d.Option == "first"); }), out micDeviceName) || !micResult.Result.Any(mic => mic == micDeviceName.FirstOrDefault())) { return(Messages.WarningNoMicrophone); } if (_configManager.AudioInfo?.SampleRate == 0 || _configManager.AudioInfo?.AAC == 0) { return(Messages.WarningWrongMicParams); } string audioOutputDeviceName; if (speakerResult.Result.Count == 0 || string.IsNullOrEmpty(_configManager.AudioInfo?.AudioOutPutDevice) || !deviceNameAccessor.TryGetSingleName(DeviceName.Speaker, out audioOutputDeviceName) || !speakerResult.Result.Any(speaker => speaker == audioOutputDeviceName)) { return(Messages.WarningNoSpeaker); } if (string.IsNullOrEmpty(_configManager.RecordInfo.RecordDirectory)) { return(Messages.WarningRecordDirectoryNotSet); } if (!Directory.Exists(_configManager.RecordInfo.RecordDirectory)) { return(Messages.WarningRecordDirectoryNotExist); } return(""); }
void UserUnpublishMicAudio(UserUnpublishModel model) { Participant participant; if (_participants.TryGetValue(model.AccountId, out participant)) { participant.Resources.RemoveWhere(res => res.ResourceId == model.ResourceId); MeetingResult result = Unsubscribe(model.AccountId, model.ResourceId, MediaType.Microphone); if (result.StatusCode == 0) { } } }
protected void DailyCalendar_EventClick(object sender, EventClickEventArgs e) { int scheduleEntryId = Convert.ToInt32(e.Value); MeetingResult meetingResult = _controller.GetEventInformationById(scheduleEntryId); if (meetingResult.MeetingId == 0) { txtBoxMeetingTitle.Text = meetingResult.Title; txtBoxMeetingTitle.Enabled = true; txtBoxFromTime.Text = meetingResult.MeetingStartTime.ToString(); txtBoxFromTime.Enabled = true; txtBoxToTime.Text = meetingResult.MeetingEndTime.ToString(); txtBoxToTime.Enabled = true; lblMeetingCalledBy.Visible = false; txtBoxMeetingCalledBy.Visible = false; lblMEetingPriority.Visible = false; txtBoxMeetingPriority.Visible = false; lblAgendaUrl.Visible = false; txtBoxAgendaUrl.Visible = false; lblPhoneBridge.Visible = false; txtBoxPhoneBridge.Visible = false; lblPhoneBridgeAccessCode.Visible = false; txtBoxPhoneBridgeAccessCode.Visible = false; lblLocation.Visible = false; txtBoxLocation.Visible = false; lblMinutesUrl.Visible = false; txtBoxMinutesUrl.Visible = false; btnDelete.Visible = true; hiddenMeetingId.Value = meetingResult.UserScheduleIndexId.ToString(); } else { txtBoxMeetingTitle.Text = meetingResult.Title; txtBoxFromTime.Text = meetingResult.MeetingStartTime.ToString(); txtBoxToTime.Text = meetingResult.MeetingEndTime.ToString(); txtBoxMeetingCalledBy.Text = meetingResult.ScheduledBy; txtBoxMeetingPriority.Text = meetingResult.MeetingPriority.ToString(); txtBoxAgendaUrl.Text = meetingResult.AgendaURL; txtBoxPhoneBridge.Text = meetingResult.PhoneBridge; txtBoxPhoneBridgeAccessCode.Text = meetingResult.PhoneBridgeAccessCode; txtBoxLocation.Text = meetingResult.ActualLocation; txtBoxMinutesUrl.Text = meetingResult.MinutesURL; } pop.Show(); }
void UserUnpublishDataVideo(UserUnpublishModel model) { Participant participant; if (_participants.TryGetValue(model.AccountId, out participant)) { participant.Resources.RemoveWhere(res => res.ResourceId == model.ResourceId); MeetingResult result = Unsubscribe(model.AccountId, model.ResourceId, MediaType.VideoDoc); if (result.StatusCode == 0) { VideoBoxManager.Release(model.AccountId, VideoBoxType.DataCard); } } }
private async Task StartSdkAsync() { if (!_meetingSdkAgent.IsStarted) { var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); IVisualizeShell visualizeShellService = IoC.Get <IVisualizeShell>(); visualizeShellService.StartingSdk(); MeetingResult result = await _meetingSdkAgent.Start("PCJM", path); if (result.StatusCode != 0) { visualizeShellService.FinishStartingSdk(false, $"启动失败!{result.Message}"); } else { Common.UserInfo userInfo = IoC.Get <Common.UserInfo>(); MeetingResult <LoginModel> meetingResult = await _meetingSdkAgent.LoginThirdParty(userInfo.GetNube(), userInfo.AppKey, userInfo.OpenId); if (meetingResult.StatusCode != 0) { visualizeShellService.FinishStartingSdk(false, "登录失败!"); } else { _eventAggregator.GetEvent <UserLoginEvent>().Publish(new MeetingSdk.Wpf.UserInfo() { UserId = meetingResult.Result.Account.AccountId, UserName = userInfo.UserName, }); visualizeShellService.FinishStartingSdk(true, Messages.InfoMeetingSdkStarted); } } //Thread.Sleep(1000); } }
private async Task <bool> StartSdkAsync() { var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); //path = Path.Combine(path, "sdk"); MeetingResult result = await _meetingSdkAgent.Start("PCJM", path); if (result.StatusCode != 0) { MessageQueueManager.Instance.AddError("启动失败!"); Dialog errorDialog = new Dialog($"启动失败!{result.Message}"); errorDialog.ShowDialog(); } else { MessageQueueManager.Instance.AddInfo("启动成功!"); } return(result.StatusCode == 0); }
public void Initialize(MeetingResult meeting) { if (meeting != null) { lblMeetingTitle.Text = meeting.Title; lblAccessCode.Text = meeting.PhoneBridgeAccessCode; lblActualLocation.Text = meeting.ActualLocation; lblAgendaUrl.Text = meeting.AgendaURL; lblEndTime.Text = meeting.MeetingEndTime.ToString(); lblStartTime.Text = meeting.MeetingStartTime.ToString(); lblPreferredLocation.Text = meeting.PreferredLocation; lblMinutesUrl.Text = meeting.MinutesURL; lblPhoneBridge.Text = meeting.PhoneBridge; lblPriority.Text = meeting.MeetingPriority.ToString(); lblScheduledBy.Text = meeting.ScheduledBy; listItemAVRequired.Selected = meeting.IsAVRequired; listItemPhoneRequired.Selected = meeting.IsPhoneRequired; listItemVideoRequired.Selected = meeting.IsVideoConfRequired; } }
public void GetMeetingsForUser(int userId) { IUser user = _userRetriever.GetUserById(userId); string userFullName = _userRetriever.GetUserFullNameByUserId(userId); List <MeetingResult> meetings = new List <MeetingResult>(); List <IMeetingMaster> meetingMasters = _meetingRetriever.GetAllMeetingsByUser(user); foreach (IMeetingMaster meeting in meetingMasters) { MeetingResult meetingResult = new MeetingResult(); meetingResult.MeetingId = meeting.MeetingId; meetingResult.ActualLocationId = meeting.ActualLocationId; meetingResult.Date = meeting.MeetingStartTime.ToString(); meetingResult.ActualLocation = _locationRetriever.GetLocationByLocationId(meeting.ActualLocationId).LocationName; meetingResult.ScheduledBy = _userRetriever.GetUserFullNameByUserId(meeting.MeetingCalledBy); meetingResult.Title = meeting.MeetingDesc; meetings.Add(meetingResult); } _view.PopulateMeetings(meetings, userFullName); }
public MeetingResult RefreshLiveStream(VideoStreamModel[] videoStreamModels, AudioStreamModel[] audioStreamModels) { if (LiveId == 0) { return(new MeetingResult() { Message = "没有可更新的流!", StatusCode = -1, }); } Monitor.Enter(_syncRoot); MeetingResult updateVideoResult = _meetingService.UpdateLiveStreamVideoInfo(LiveId, videoStreamModels.ToArray()); MeetingResult updateAudioResult = _meetingService.UpdateLiveStreamAudioInfo(LiveId, audioStreamModels.ToArray()); MeetingResult mergedResult = new MeetingResult() { Message = "更新推流成功!", StatusCode = 0 }; if (updateAudioResult.StatusCode != 0) { mergedResult.StatusCode = -1; mergedResult.Message = updateAudioResult.Message; } if (updateVideoResult.StatusCode != 0) { mergedResult.StatusCode = -1; mergedResult.Message += $" {updateVideoResult.Message}"; } Monitor.Exit(_syncRoot); return(mergedResult); }
private void GetParticipants() { MeetingResult <IList <ParticipantModel> > result = _meetingSdkWrapper.GetParticipants(); if (result.StatusCode == 0) { var models = result.Result; foreach (var model in models) { if (model.AccountId != Participant.Account.AccountId) { var account = new AccountModel(model.AccountId, model.AccountName); var participant = new Participant(account) { IsSpeaking = model.IsSpeaking, }; _participants.TryAdd(model.AccountId, participant); } } _eventAggregator.GetEvent <ParticipantCollectionChangeEvent>().Publish(_participants.Values); } }
public MeetingResult StopMp4Record() { if (RecordId == 0) { return(new MeetingResult() { Message = MessageManager.NoLiveToStop, StatusCode = -1, }); } MeetingResult stopRecordResult = _meetingService.StopMp4Record(RecordId); MeetingResult unpublishLiveResult = _meetingService.UnpublishLiveStream(RecordId); RecordId = 0; MeetingResult mergedResult = new MeetingResult() { Message = "停止录制成功!", StatusCode = 0 }; if (stopRecordResult.StatusCode != 0) { mergedResult.StatusCode = -1; mergedResult.Message = stopRecordResult.Message; } if (unpublishLiveResult.StatusCode != 0) { mergedResult.StatusCode = -1; mergedResult.Message += $" {unpublishLiveResult.Message}"; } return(mergedResult); }
public MeetingResult GetEventInformationById(int scheduleEntryId) { MeetingResult meetingResult = new MeetingResult(); IUserSchedule userSchedule = _meetingRetriever.GetUserBusyTime(scheduleEntryId); if (userSchedule.MeetingId == 0) { meetingResult.UserScheduleIndexId = userSchedule.IndexId; meetingResult.Title = userSchedule.ScheduleEntryDescription; meetingResult.MeetingStartTime = userSchedule.FromTime; meetingResult.MeetingEndTime = userSchedule.ToTime; meetingResult.MeetingId = userSchedule.MeetingId; } else { IMeetingMaster result = _meetingRetriever.GetMeetingByMeetingId(userSchedule.MeetingId); meetingResult.AgendaURL = result.AgendaURL; meetingResult.IsAVRequired = result.IsAVRequired; meetingResult.IsPhoneRequired = result.IsPhoneRequired; meetingResult.IsVideoConfRequired = result.IsVideoConfRequired; meetingResult.PreferredLocation = _locationRetriever.GetLocationByLocationId(result.PreferredLocationId).LocationName; meetingResult.ActualLocation = _locationRetriever.GetLocationByLocationId(result.ActualLocationId).LocationName; meetingResult.MeetingDesc = result.MeetingDesc; meetingResult.MeetingEndTime = result.MeetingEndTime; meetingResult.MeetingPriority = result.MeetingPriority;//todo meetingResult.MeetingStartTime = result.MeetingStartTime; meetingResult.MinutesURL = result.MinutesURL; meetingResult.PhoneBridge = result.PhoneBridge; meetingResult.PhoneBridgeAccessCode = result.PhoneBridgeAccessCode; meetingResult.ScheduledBy = _userRetriever.GetUserFullNameByUserId(result.MeetingCalledBy); meetingResult.Title = result.MeetingDesc; meetingResult.MeetingId = userSchedule.MeetingId; } return(meetingResult); }
public MeetingResult StopPushLiveStream() { if (LiveId == 0) { return(new MeetingResult() { Message = "没有可停止的流!", StatusCode = -1, }); } MeetingResult stopRecordResult = _meetingService.StopLiveRecord(LiveId); MeetingResult unpublishLiveResult = _meetingService.UnpublishLiveStream(LiveId); LiveId = 0; MeetingResult mergedResult = new MeetingResult() { Message = "停止推流成功!", StatusCode = 0 }; if (stopRecordResult.StatusCode != 0) { mergedResult.StatusCode = -1; mergedResult.Message = stopRecordResult.Message; } if (unpublishLiveResult.StatusCode != 0) { mergedResult.StatusCode = -1; mergedResult.Message += $" {unpublishLiveResult.Message}"; } return(mergedResult); }
public void ShowExtendedView(Window extendedView) { _disposeWindowDelegate = windowManager.RemoveLayoutWindow; windowManager.AddLayoutWindow(this); lock (_syncRoot) { ExtendedView = extendedView; Size = new System.Windows.Size() { Width = extendedView.Width, Height = extendedView.Height, }; Properties.Clear(); _items.Clear(); foreach (var item in windowManager.VideoBoxManager.Items) { VideoBox copiedVideoBox = item.Copy(); SetDataBindings(copiedVideoBox); _items.Add(copiedVideoBox.Name, copiedVideoBox); if (copiedVideoBox.AccountResource != null && copiedVideoBox.Visible) { MeetingResult meetingResult = _meetingSdkAgent.AddDisplayWindow(copiedVideoBox.AccountResource.AccountModel.AccountId, copiedVideoBox.AccountResource.ResourceId, copiedVideoBox.Handle, 0, 0); System.Console.WriteLine($"ShowExtendedView/AddDisplayWindow:statusCode={meetingResult.StatusCode}, msg={meetingResult.Message}, accountId={copiedVideoBox.AccountResource.AccountModel.AccountId}"); } } } LayoutChange(LayoutRendererStore.CurrentLayoutRenderType); _eventAggregator.GetEvent <ExtendedViewsShowedEvent>().Publish(); }
public Task DeleteAsync(MeetingResult meetingResult) { throw new NotImplementedException(); }
private async void ShareAsync() { if (_isProcessingShareOperation) { ShareToggleItem.IsChecked = !ShareToggleItem.IsChecked; return; } if (!_isProcessingShareOperation) { _isProcessingShareOperation = true; } try { MeetingResult <IList <VideoDeviceModel> > videoDeviceResult = _meetingService.GetVideoDevices(); MeetingResult <IList <string> > micResult = _meetingService.GetMicrophones(); ConfigManager configManager = _localDataManager.GetSettingConfigData(); IEnumerable <string> docCameras; if (!_deviceNameAccessor.TryGetName(DeviceName.Camera, (devName) => { return(devName.Option == "second"); }, out docCameras) || !videoDeviceResult.Result.Any(vdm => vdm.DeviceName == docCameras.FirstOrDefault())) { ShareToggleItem.IsChecked = false; MessageQueueManager.Instance.AddError("课件摄像头未配置!"); return; } if (configManager.DocVideoInfo?.DisplayWidth == 0 || configManager.DocVideoInfo?.DisplayHeight == 0 || configManager.DocVideoInfo?.VideoBitRate == 0) { ShareToggleItem.IsChecked = false; MessageQueueManager.Instance.AddError("课件采集参数未设置!"); return; } IEnumerable <string> docMics; if (!_deviceNameAccessor.TryGetName(DeviceName.Microphone, (devName) => { return(devName.Option == "second"); }, out docMics) || !micResult.Result.Any(mic => mic == docMics.FirstOrDefault())) { ShareToggleItem.IsChecked = false; MessageQueueManager.Instance.AddError("课件麦克风未配置!"); return; } if (!_windowManager.Participant.IsSpeaking) { ShareToggleItem.IsChecked = false; MessageQueueManager.Instance.AddError("发言状态才可以进行课件分享!"); return; } if (ShareToggleItem.IsChecked) { MeetingResult <int> publishDocCameraResult = await _windowManager.Publish(MeetingSdk.NetAgent.Models.MediaType.VideoDoc, docCameras.FirstOrDefault()); MeetingResult <int> publishDocMicResult = await _windowManager.Publish(MeetingSdk.NetAgent.Models.MediaType.AudioDoc, docMics.FirstOrDefault()); if (publishDocCameraResult.StatusCode != 0 || publishDocMicResult.StatusCode != 0) { ShareToggleItem.IsChecked = false; MessageQueueManager.Instance.AddError("打开课件失败!"); return; } AppCache.AddOrUpdate(CacheKey.DocVideoResourceId, publishDocCameraResult.Result); AppCache.AddOrUpdate(CacheKey.DocAudioResourceId, publishDocMicResult.Result); AppCache.AddOrUpdate(CacheKey.IsDocOpen, true); } else { object docCameraResourceIdObj = AppCache.TryGet(CacheKey.DocVideoResourceId); int docCameraResourceId; if (docCameraResourceIdObj == null || !int.TryParse(docCameraResourceIdObj.ToString(), out docCameraResourceId)) { return; } object docAudioResourceIdObj = AppCache.TryGet(CacheKey.DocAudioResourceId); int docAudioResourceId; if (docAudioResourceIdObj == null || !int.TryParse(docAudioResourceIdObj.ToString(), out docAudioResourceId)) { return; } MeetingResult stopShareCameraResult = await _windowManager.Unpublish(MeetingSdk.NetAgent.Models.MediaType.VideoDoc, docCameraResourceId); MeetingResult stopShareMicResult = await _windowManager.Unpublish(MeetingSdk.NetAgent.Models.MediaType.AudioDoc, docAudioResourceId); if (stopShareCameraResult.StatusCode != 0 || stopShareMicResult.StatusCode != 0) { ShareToggleItem.IsChecked = true; MessageQueueManager.Instance.AddError("关闭课件失败!"); return; } //CheckClassModeAsync(ModeDisplayerType.InteractionMode); AppCache.AddOrUpdate(CacheKey.IsDocOpen, false); } CheckClassMode(); } catch (Exception) { } finally { _isProcessingShareOperation = false; } }
private void OnDeviceLostNoticeEvent(MeetingResult <ResourceModel> obj) { _eventAggregator.GetEvent <DeviceLostNoticeEvent>().Publish(obj.Result); }
private void OnDeviceStatusChangedEvent(MeetingResult <DeviceStatusModel> obj) { _eventAggregator.GetEvent <DeviceStatusChangedEvent>().Publish(obj.Result); }