GetAudioSource() public method

public GetAudioSource ( int FrameRate, WaveFormat &Wf ) : IAudioProvider
FrameRate int
Wf WaveFormat
return IAudioProvider
コード例 #1
0
        void StartRecording()
        {
            var duration = OthersViewModel.Duration;
            var delay    = OthersViewModel.StartDelay;

            if (duration != 0 && (delay * 1000 > duration))
            {
                Status = "Delay cannot be greater than Duration";
                SystemSounds.Asterisk.Play();
                return;
            }

            if (OthersViewModel.MinimizeOnStart)
            {
                WindowState = WindowState.Minimized;
            }

            ReadyToRecord = false;

            var noVideo = VideoViewModel.SelectedVideoSourceKind == VideoSourceKind.NoVideo;

            var extension = noVideo
                            //? (AudioViewModel.Encode && AudioViewModel.SelectedAudioSource is WaveInDevice ? ".mp3" : ".wav")
                ? ".wav"
                : (VideoViewModel.SelectedCodec.Name == "Gif" ? ".gif" : ".avi");

            _currentFileName = Path.Combine(OutPath, DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + extension);

            Status = delay > 0 ? $"Recording from t = {delay} ms..." : "Recording...";

            _timer.Stop();
            TimeSpan = TimeSpan.Zero;

            var audioSource = AudioViewModel.GetAudioSource();

            var imgProvider = GetImageProvider();

            var videoEncoder = GetVideoFileWriter(imgProvider);

            if (_recorder == null)
            {
                if (noVideo)
                {
                    _recorder = new AudioRecorder(audioSource, AudioViewModel.GetAudioFileWriter(_currentFileName, audioSource.WaveFormat));
                }

                else
                {
                    _recorder = new Recorder(videoEncoder, imgProvider, VideoViewModel.FrameRate, audioSource);
                }
            }

            _recorder.RecordingStopped += (s, E) =>
            {
                OnStopped();

                if (E?.Error == null)
                {
                    return;
                }

                Status = "Error";
                MessageBox.Show(E.ToString());
            };

            RecentViewModel.Add(_currentFileName, videoEncoder == null ? RecentItemType.Audio : RecentItemType.Video);

            _recorder.Start(delay);

            _timer.Start();
        }