public VideoViewModel(IRegionProvider RegionProvider, IEnumerable <IImageWriterItem> ImageWriters, Settings Settings, LanguageManager LanguageManager, FullScreenSourceProvider FullScreenProvider, IIconSet Icons, // ReSharper disable SuggestBaseTypeForParameter ScreenSourceProvider ScreenSourceProvider, WindowSourceProvider WindowSourceProvider, RegionSourceProvider RegionSourceProvider, NoVideoSourceProvider NoVideoSourceProvider, DeskDuplSourceProvider DeskDuplSourceProvider, FFmpegWriterProvider FFmpegWriterProvider, SharpAviWriterProvider SharpAviWriterProvider, GifWriterProvider GifWriterProvider, StreamingWriterProvider StreamingWriterProvider, DiscardWriterProvider DiscardWriterProvider // ReSharper restore SuggestBaseTypeForParameter ) : base(Settings, LanguageManager) { this.NoVideoSourceProvider = NoVideoSourceProvider; AvailableVideoWriters = new ReadOnlyObservableCollection <IVideoWriterItem>(_videoWriters); AvailableImageWriters = new ReadOnlyObservableCollection <IImageWriterItem>(_imageWriters); _regionProvider = RegionProvider; _fullScreenProvider = FullScreenProvider; VideoSources.Add(new VideoSourceModel(NoVideoSourceProvider, nameof(Loc.OnlyAudio), NoVideoDescription, Icons.Video)); VideoSources.Add(new VideoSourceModel(FullScreenProvider, nameof(Loc.FullScreen), FullScreenDescription, Icons.MultipleMonitor)); VideoSources.Add(new VideoSourceModel(ScreenSourceProvider, nameof(Loc.Screen), ScreenDescription, Icons.Screen)); VideoSources.Add(new VideoSourceModel(WindowSourceProvider, nameof(Loc.Window), WindowDescription, Icons.Window)); VideoSources.Add(new VideoSourceModel(RegionSourceProvider, nameof(Loc.Region), RegionDescription, Icons.Region)); if (Windows8OrAbove) { VideoSources.Add(new VideoSourceModel(DeskDuplSourceProvider, "Desktop Duplication", DeskDuplDescription, Icons.Game)); } VideoWriterProviders.Add(FFmpegWriterProvider); VideoWriterProviders.Add(GifWriterProvider); VideoWriterProviders.Add(SharpAviWriterProvider); VideoWriterProviders.Add(StreamingWriterProvider); VideoWriterProviders.Add(DiscardWriterProvider); foreach (var imageWriter in ImageWriters) { _imageWriters.Add(imageWriter); } SetDefaultSource(); if (!AvailableImageWriters.Any(M => M.Active)) { AvailableImageWriters[0].Active = true; } SelectedVideoWriterKind = FFmpegWriterProvider; }
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()); }
void HandleVideoEncoder(StartCmdOptions StartOptions) { if (StartOptions.Encoder == null) { return; } // FFmpeg if (FFmpegService.FFmpegExists && Regex.IsMatch(StartOptions.Encoder, @"^ffmpeg:\d+$")) { var index = int.Parse(StartOptions.Encoder.Substring(7)); _videoWritersViewModel.SelectedVideoWriterKind = ServiceProvider.Get <FFmpegWriterProvider>(); if (index < _videoWritersViewModel.AvailableVideoWriters.Count) { _videoWritersViewModel.SelectedVideoWriter = _videoWritersViewModel.AvailableVideoWriters[index]; } } // SharpAvi else if (ServiceProvider.FileExists("SharpAvi.dll") && Regex.IsMatch(StartOptions.Encoder, @"^sharpavi:\d+$")) { var index = int.Parse(StartOptions.Encoder.Substring(9)); _videoWritersViewModel.SelectedVideoWriterKind = ServiceProvider.Get <SharpAviWriterProvider>(); if (index < _videoWritersViewModel.AvailableVideoWriters.Count) { _videoWritersViewModel.SelectedVideoWriter = _videoWritersViewModel.AvailableVideoWriters[index]; } } // Stream else if (FFmpegService.FFmpegExists && Regex.IsMatch(StartOptions.Encoder, @"^stream:\S+$")) { var url = StartOptions.Encoder.Substring(7); _settings.FFmpeg.CustomStreamingUrl = url; _videoWritersViewModel.SelectedVideoWriterKind = ServiceProvider.Get <StreamingWriterProvider>(); _videoWritersViewModel.SelectedVideoWriter = StreamingWriterProvider.GetCustomStreamingCodec(); } }
public MyRecordingViewModel(AudioSource audioSource) : base(new Settings(), LanguageManager.Instance) { _audioSource = audioSource; VideoSourcePicker = new VideoSourcePicker(); //_audioSource = new BassAudioSource(Settings.Audio); RegionProvider = new RegionSelector(VideoSourcePicker); _webcamOverlay = new WebcamOverlay(new WebCamProvider(), Settings); _previewWindow = new PreviewWindowService(); FullScreenProvider = new FullScreenSourceProvider(LanguageManager, new FullScreenItem()); ScreenSourceProvider = new ScreenSourceProvider(LanguageManager, VideoSourcePicker); WindowSourceProvider = new WindowSourceProvider(LanguageManager, VideoSourcePicker, new RegionSelector(VideoSourcePicker)); RegionSourceProvider = new RegionSourceProvider(LanguageManager, RegionProvider); NoVideoSourceProvider = new NoVideoSourceProvider(LanguageManager); DeskDuplSourceProvider = new DeskDuplSourceProvider(LanguageManager, VideoSourcePicker); ImageWriters = new IImageWriterItem[4] { new EditorWriter(), new ClipboardWriter(SystemTray, LanguageManager), null, null }; SharpAviWriterProvider = new SharpAviWriterProvider(); DiscardWriterProvider = new DiscardWriterProvider(); FFmpegWriterProvider = new FFmpegWriterProvider(new FFmpegSettings()); GifWriterProvider = new GifWriterProvider(LanguageManager, new GifItem(new GifSettings())); StreamingWriterProvider = new StreamingWriterProvider(); _videoViewModel = new VideoViewModel( RegionProvider, ImageWriters, Settings, LanguageManager, FullScreenProvider, ScreenSourceProvider, WindowSourceProvider, RegionSourceProvider, NoVideoSourceProvider, DeskDuplSourceProvider, FFmpegWriterProvider, SharpAviWriterProvider, GifWriterProvider, StreamingWriterProvider, DiscardWriterProvider ); }