IVideoWriterItem HandleVideoEncoder(StartCmdOptions StartOptions, out IVideoWriterProvider VideoWriterKind) { var ffmpegExists = FFmpegService.FFmpegExists; var sharpAviWriterProvider = ServiceProvider.Get <SharpAviWriterProvider>(); // FFmpeg if (ffmpegExists && Regex.IsMatch(StartOptions.Encoder, @"^ffmpeg:\d+$")) { var index = int.Parse(StartOptions.Encoder.Substring(7)); var ffmpegWriterProvider = ServiceProvider.Get <FFmpegWriterProvider>(); var writers = ffmpegWriterProvider.ToArray(); if (index < writers.Length) { VideoWriterKind = ffmpegWriterProvider; return(writers[index]); } } // SharpAvi else if (ServiceProvider.FileExists("SharpAvi.dll") && Regex.IsMatch(StartOptions.Encoder, @"^sharpavi:\d+$")) { var index = int.Parse(StartOptions.Encoder.Substring(9)); var writers = sharpAviWriterProvider.ToArray(); if (index < writers.Length) { VideoWriterKind = sharpAviWriterProvider; return(writers[index]); } } // Stream else if (ffmpegExists && Regex.IsMatch(StartOptions.Encoder, @"^stream:\S+$")) { var url = StartOptions.Encoder.Substring(7); _settings.FFmpeg.CustomStreamingUrl = url; VideoWriterKind = ServiceProvider.Get <StreamingWriterProvider>(); return(StreamingWriterProvider.GetCustomStreamingCodec()); } // Rolling else if (ffmpegExists && Regex.IsMatch(StartOptions.Encoder, @"^roll:\d+$")) { var duration = int.Parse(StartOptions.Encoder.Substring(5)); VideoWriterKind = ServiceProvider.Get <FFmpegWriterProvider>(); return(new FFmpegRollingWriterItem(duration)); } VideoWriterKind = sharpAviWriterProvider; return(sharpAviWriterProvider.First()); }
IVideoWriterItem HandleVideoEncoder(StartCmdOptions StartOptions, out IVideoWriterProvider VideoWriterKind) { var selected = _videoWriterProviders .Select(M => new { kind = M, writer = M.ParseCli(StartOptions.Encoder) }) .FirstOrDefault(M => M.writer != null); if (selected != null) { VideoWriterKind = selected.kind; return(selected.writer); } var ffmpegExists = FFmpegService.FFmpegExists; var sharpAviWriterProvider = ServiceProvider.Get <SharpAviWriterProvider>(); // Rolling if (ffmpegExists && Regex.IsMatch(StartOptions.Encoder, @"^roll:\d+$")) { var duration = int.Parse(StartOptions.Encoder.Substring(5)); VideoWriterKind = ServiceProvider.Get <FFmpegWriterProvider>(); return(new FFmpegRollingWriterItem(duration)); } VideoWriterKind = sharpAviWriterProvider; return(sharpAviWriterProvider.First()); }
IVideoWriterItem HandleVideoEncoder(StartCmdOptions StartOptions, out IVideoWriterProvider VideoWriterKind) { var selected = _videoWriterProviders .Select(M => new { kind = M, writer = M.ParseCli(StartOptions.Encoder) }) .FirstOrDefault(M => M.writer != null); if (selected != null) { VideoWriterKind = selected.kind; return(selected.writer); } var sharpAviWriterProvider = ServiceProvider.Get <SharpAviWriterProvider>(); // Steps in video if (StartOptions.Encoder == "steps:video") { _settings.Video.RecorderMode = RecorderMode.Steps; VideoWriterKind = null; return(new StepsVideoWriterItem(sharpAviWriterProvider.First())); } // Steps in set of images if (StartOptions.Encoder == "steps:images") { _settings.Video.RecorderMode = RecorderMode.Steps; VideoWriterKind = null; return(new ImageFolderWriterItem()); } VideoWriterKind = sharpAviWriterProvider; return(sharpAviWriterProvider.First()); }
IVideoWriterItem HandleVideoEncoder(StartCmdOptions StartOptions, out IVideoWriterProvider VideoWriterKind) { var selected = _videoWriterProviders .Select(M => new { kind = M, writer = M.ParseCli(StartOptions.Encoder) }) .FirstOrDefault(M => M.writer != null); if (selected != null) { VideoWriterKind = selected.kind; return(selected.writer); } var sharpAviWriterProvider = ServiceProvider.Get <SharpAviWriterProvider>(); VideoWriterKind = sharpAviWriterProvider; return(sharpAviWriterProvider.First()); }