Example #1
0
        /// <summary>
        /// 开始会议
        /// </summary>
        public void Start()
        {
            //check
            Meeting.CheckNull();
            Microphone.CheckNull();
            recorderService.CheckNull();

            //server[speech]
            server.SpeechStart(Setting);

            //recorder
            recorderService.Configruation((opt) =>
            {
                opt.DeviceNum          = Microphone.Key;
                opt.Rate               = Setting.Rate;
                opt.BitDepth           = Setting.BitDepth;
                opt.Channel            = Setting.Channel;
                opt.BufferMilliseconds = Setting.BufferMilliseconds;
                opt.DataEvent          = (sender, e) =>
                {
                    //server.MeetingSend(Meeting.Id, e.Buffer, 0, e.BytesRecorded);
                    server.SpeechSend(new Plug.Speech.SpeechData()
                    {
                        Key    = Meeting.Id,
                        Data   = e.Buffer,
                        Offset = 0,
                        Length = e.BytesRecorded,
                        LastDt = DateTime.Now
                    });
                };
                opt.VolumeEvent = (sender, e, volume) =>
                {
                    MicrophoneVolume = volume;
                    if (PreVol != volume)
                    {
                        PreVolDt = DateTime.Now;
                    }
                    PreVol = volume;
                    //Trace.WriteLine($"v:{volume} / {PreVolDt}  {DateTime.Now - PreVolDt}");
                };
                opt.StopedEvent = (sender, e) =>
                {
                    Trace.WriteLine($"stop: {DateTime.Now}");
                };
                opt.FileName = MeetingHelper.GetMeetingWavFile(Meeting.Id);
            });
            recorderService.Start();

            //task
            SyncTask();

            //sync
            SyncUI(EnumTaskStatus.Started);
        }