示例#1
0
        /// <summary>
        /// Creates a new file output.
        /// </summary>
        /// <returns></returns>
        public static ObsOutput CreateOutput()
        {
            string videoDirectory = $"{FolderService.GetPath(KnownFolder.Videos)}\\{Store.Data.Record.VideoOutputFolder}";

            if (Store.Data.Record.RecordedFiles.Count == 0)
            {
                Store.Data.Record.LastVideoName = $"ScreenRecording {DateTime.Now:yyyy-MM-dd HH.mm.ss}";
            }

            string videoFileName = Store.Data.Record.LastVideoName + "_part " + (Store.Data.Record.RecordedFiles.Count + 1) + ".mp4";

            string videoFilePath = $"{videoDirectory}\\{videoFileName}";

            Store.Data.Record.RecordedFiles.Add(new FileInfo(videoFilePath));

            Directory.CreateDirectory(videoDirectory);
            videoFilePath = videoFilePath.Replace("\\", "/"); // OBS uses forward slashes

            ObsOutput obsOutput = new ObsOutput(ObsOutputType.Dummy, "ffmpeg_muxer", "simple_file_output");

            ObsData outputSettings = new ObsData();

            outputSettings.SetString("path", videoFilePath);
            outputSettings.SetString("muxer_settings", "movflags=faststart");
            obsOutput.Update(outputSettings);
            outputSettings.Dispose();

            return(obsOutput);
        }
 public void Dispose()
 {
     obsOutput?.Dispose();
     obsOutput = null;
     obsVideoEncoder?.Dispose();
     obsVideoEncoder = null;
     obsAudioEncoder?.Dispose();
     obsAudioEncoder = null;
 }