Exemplo n.º 1
0
        private void Record(string path)
        {
            if (Settings.AudioBitrate == 96)
            {
                A_bitrate = AudioBitrate.bitrate_96kbps;
            }
            else if (Settings.AudioBitrate == 128)
            {
                A_bitrate = AudioBitrate.bitrate_128kbps;
            }
            else if (Settings.AudioBitrate == 160)
            {
                A_bitrate = AudioBitrate.bitrate_160kbps;
            }
            else
            {
                A_bitrate = AudioBitrate.bitrate_192kbps;
            }

            if (Settings.AudioChannels == "5.1")
            {
                A_Channels = AudioChannels.FivePointOne;
            }
            else if (Settings.AudioChannels == "Mono")
            {
                A_Channels = AudioChannels.Mono;
            }
            else
            {
                A_Channels = AudioChannels.Stereo;
            }

            UpdateLogFile("Creating recording options.");
            RecorderOptions options = new RecorderOptions
            {
                RecorderMode = RecorderMode.Video,
                //If throttling is disabled, out of memory exceptions may eventually crash the program,
                //depending on encoder settings and system specifications.
                IsThrottlingDisabled = false,
                //Hardware encoding is enabled by default.
                IsHardwareEncodingEnabled = Settings.HardwareEncoding,
                //Low latency mode provides faster encoding, but can reduce quality.
                IsLowLatencyEnabled = Settings.LowLatency,
                //Fast start writes the mp4 header at the beginning of the file, to facilitate streaming.
                IsMp4FastStartEnabled = false,
                AudioOptions          = new AudioOptions
                {
                    Bitrate        = A_bitrate,
                    Channels       = A_Channels,
                    IsAudioEnabled = Settings.EnableAudio
                },
                VideoOptions = new VideoOptions
                {
                    BitrateMode           = BitrateControlMode.UnconstrainedVBR,
                    Bitrate               = Settings.VideoBitrate * 1000000,
                    Framerate             = Settings.FrameRate,
                    IsMousePointerEnabled = Settings.RecordMouse,
                    IsFixedFramerate      = true,
                    EncoderProfile        = H264Profile.Main
                }
            };

            UpdateLogFile("Creating Recorder object.");
            Rec = Recorder.CreateRecorder(options);
            Rec.OnRecordingFailed += Rec_OnRecordingFailed;
            Rec.OnStatusChanged   += Rec_OnStatusChanged;
            UpdateLogFile("Recording started.");
            Rec.Record(path);
        }