Captura.AudioViewModel.GetAudioSource C# (CSharp) Method

GetAudioSource() public method

public GetAudioSource ( int FrameRate, WaveFormat &Wf ) : IAudioProvider
FrameRate int
Wf WaveFormat
return IAudioProvider
        public IAudioProvider GetAudioSource(int FrameRate, out WaveFormat Wf)
        {
            Wf = new WaveFormat(44100, 16, Stereo ? 2 : 1);

            IAudioEncoder audioEncoder = SelectedBitRate != 0 && IsLamePresent && Encode ? new Mp3EncoderLame(Wf.Channels, Wf.SampleRate, SelectedBitRate) : null;

            if (SelectedAudioSource is WaveInDevice)
                return new WaveInProvider(SelectedAudioSource as WaveInDevice, Wf, FrameRate);

            if (!(SelectedAudioSource is MMDevice))
                return null;

            IAudioProvider audioSource = new LoopbackProvider((MMDevice)SelectedAudioSource);

            Wf = audioSource.WaveFormat;

            return audioEncoder == null ? audioSource : new EncodedAudioProvider(audioSource, audioEncoder);
        }

Usage Example

コード例 #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();
        }