Ejemplo n.º 1
0
 public void Dispose()
 {
     ServiceProvider.Dispose();
 }
Ejemplo n.º 2
0
 static NinjectServiceLocator()
 {
     ServiceProvider.LoadModule(new MainModule());
 }
Ejemplo n.º 3
0
        IVideoWriterItem HandleVideoEncoder(StartCmdOptions StartOptions, out IVideoWriterProvider VideoWriterKind)
        {
            var ffmpegExists           = FFmpegService.FFmpegExists;
            var sharpAviWriterProvider = ServiceProvider.Get <SharpAviWriterProvider>();

            if (StartOptions.Encoder == null)
            {
                StartOptions.Encoder = "sharpavi:0";
            }

            // 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());
        }
Ejemplo n.º 4
0
        public ImageUploadNotification()
        {
            _loc = ServiceProvider.Get <LanguageManager>();

            PrimaryText = _loc.ImageUploading;
        }
Ejemplo n.º 5
0
        public MainWindow()
        {
            Instance = this;

            ServiceProvider.RegionProvider = new RegionSelector();

            ServiceProvider.MessageProvider = new MessageProvider();

            ServiceProvider.WebCamProvider = new WebCamProvider();

            FFMpegService.FFMpegDownloader += () =>
            {
                if (_downloader == null)
                {
                    _downloader         = new FFMpegDownloader();
                    _downloader.Closed += (Sender, Args) => _downloader = null;
                }

                _downloader.ShowAndFocus();
            };

            InitializeComponent();

            ServiceProvider.MainWindow = new MainWindowProvider(this);

            if (App.CmdOptions.Tray)
            {
                Hide();
            }

            // Register for Windows Messages
            ComponentDispatcher.ThreadPreprocessMessage += (ref MSG Message, ref bool Handled) =>
            {
                const int wmHotkey = 786;

                if (Message.message == wmHotkey)
                {
                    var id = Message.wParam.ToInt32();

                    ServiceProvider.RaiseHotKeyPressed(id);
                }
            };

            ServiceProvider.SystemTray = new SystemTray(SystemTray);

            Closing += (Sender, Args) =>
            {
                if (!TryExit())
                {
                    Args.Cancel = true;
                }
            };

            Loaded += (Sender, Args) =>
            {
                RepositionWindowIfOutside();

                if (DataContext is MainViewModel vm)
                {
                    ServiceProvider.MainViewModel = vm;

                    vm.Init(!App.CmdOptions.NoPersist, true, !App.CmdOptions.Reset, !App.CmdOptions.NoHotkeys);
                }
            };
        }
Ejemplo n.º 6
0
        static void List()
        {
            Banner();

            var underline = $"\n{new string('-', 30)}";

            #region FFmpeg
            var ffmpegExists = FFMpegService.FFMpegExists;

            WriteLine($"FFmpeg Available: {(ffmpegExists ? "YES" : "NO")}");

            WriteLine();

            if (ffmpegExists)
            {
                WriteLine("FFmpeg ENCODERS" + underline);

                var writerProvider = ServiceProvider.Get <FFMpegWriterProvider>();

                var i = 0;

                foreach (var codec in writerProvider)
                {
                    WriteLine($"{i.ToString().PadRight(2)}: {codec}");
                    ++i;
                }

                WriteLine();
            }
            #endregion

            #region SharpAvi
            var sharpAviExists = ServiceProvider.FileExists("SharpAvi.dll");

            WriteLine($"SharpAvi Available: {(sharpAviExists ? "YES" : "NO")}");

            WriteLine();

            if (sharpAviExists)
            {
                WriteLine("SharpAvi ENCODERS" + underline);

                var writerProvider = ServiceProvider.Get <SharpAviWriterProvider>();

                var i = 0;

                foreach (var codec in writerProvider)
                {
                    WriteLine($"{i.ToString().PadRight(2)}: {codec}");
                    ++i;
                }

                WriteLine();
            }
            #endregion

            #region Windows
            WriteLine("AVAILABLE WINDOWS" + underline);

            var winProvider = ServiceProvider.Get <WindowSourceProvider>();

            foreach (var source in winProvider.OfType <WindowItem>())
            {
                WriteLine($"{source.Window.Handle.ToString().PadRight(10)}: {source}");
            }

            WriteLine();
            #endregion

            #region Screens
            WriteLine("AVAILABLE SCREENS" + underline);

            var scrProvider = ServiceProvider.Get <ScreenSourceProvider>();

            var j = 0;

            // First is Full Screen
            foreach (var screen in scrProvider.Skip(1))
            {
                WriteLine($"{j.ToString().PadRight(2)}: {screen}");

                ++j;
            }

            WriteLine();
            #endregion

            #region MouseKeyHook
            WriteLine($"MouseKeyHook Available: {(ServiceProvider.Get<MainViewModel>().MouseKeyHookAvailable ? "YES" : "NO")}");

            WriteLine();
            #endregion

            var audio = ServiceProvider.Get <AudioSource>();

            WriteLine($"ManagedBass Available: {(audio is BassAudioSource ? "YES" : "NO")}");

            WriteLine();

            #region Microphones
            if (audio.AvailableRecordingSources.Count > 1)
            {
                WriteLine("AVAILABLE MICROPHONES" + underline);

                for (var i = 1; i < audio.AvailableRecordingSources.Count; ++i)
                {
                    WriteLine($"{(i - 1).ToString().PadRight(2)}: {audio.AvailableRecordingSources[i]}");
                }

                WriteLine();
            }
            #endregion

            #region Speaker
            if (audio.AvailableLoopbackSources.Count > 1)
            {
                WriteLine("AVAILABLE SPEAKER SOURCES" + underline);

                for (var i = 1; i < audio.AvailableLoopbackSources.Count; ++i)
                {
                    WriteLine($"{(i - 1).ToString().PadRight(2)}: {audio.AvailableLoopbackSources[i]}");
                }

                WriteLine();
            }
            #endregion
        }
Ejemplo n.º 7
0
        public void OnLoad(IBinder Binder)
        {
            Binder.BindSingleton <HotkeyActionRegisterer>();

            // Singleton View Models
            Binder.BindSingleton <MainViewModel>();
            Binder.BindSingleton <VideoViewModel>();
            Binder.BindSingleton <ProxySettingsViewModel>();
            Binder.BindSingleton <LicensesViewModel>();
            Binder.BindSingleton <CrashLogsViewModel>();
            Binder.BindSingleton <FFmpegCodecsViewModel>();
            Binder.BindSingleton <ScreenShotViewModel>();
            Binder.BindSingleton <RecentViewModel>();
            Binder.BindSingleton <RecordingViewModel>();
            Binder.BindSingleton <FileNameFormatViewModel>();

            Binder.BindSingleton <CustomOverlaysViewModel>();
            Binder.BindSingleton <CustomImageOverlaysViewModel>();
            Binder.BindSingleton <CensorOverlaysViewModel>();

            // Settings
            Binder.BindSingleton <Settings>();
            Binder.Bind(() => ServiceProvider.Get <Settings>().Audio);
            Binder.Bind(() => ServiceProvider.Get <Settings>().FFmpeg);
            Binder.Bind(() => ServiceProvider.Get <Settings>().Gif);
            Binder.Bind(() => ServiceProvider.Get <Settings>().Proxy);
            Binder.Bind(() => ServiceProvider.Get <Settings>().Sounds);

            // Keymap
            Binder.BindSingleton <KeymapViewModel>();

            // Localization
            Binder.Bind(() => LanguageManager.Instance);

            // Hotkeys
            Binder.BindSingleton <HotKeyManager>();

            // Image Writers
            Binder.BindSingleton <DiskWriter>();
            Binder.BindSingleton <ClipboardWriter>();
            Binder.BindSingleton <ImgurWriter>();

            Binder.Bind <IImageWriterItem>(ServiceProvider.Get <DiskWriter>);
            Binder.Bind <IImageWriterItem>(ServiceProvider.Get <ClipboardWriter>);
            Binder.Bind <IImageWriterItem>(ServiceProvider.Get <ImgurWriter>);

            // Video Writer Providers
            Binder.BindSingleton <FFmpegWriterProvider>();
            Binder.BindSingleton <GifWriterProvider>();
            Binder.BindSingleton <StreamingWriterProvider>();
            Binder.BindSingleton <DiscardWriterProvider>();
            Binder.BindSingleton <SharpAviWriterProvider>();

            Binder.BindSingleton <FullScreenItem>();

            // Video Source Providers
            Binder.BindSingleton <ScreenSourceProvider>();
            Binder.BindSingleton <FullScreenSourceProvider>();
            Binder.BindSingleton <RegionSourceProvider>();
            Binder.BindSingleton <WindowSourceProvider>();
            Binder.BindSingleton <DeskDuplSourceProvider>();
            Binder.BindSingleton <NoVideoSourceProvider>();

            // Folder Browser Dialog
            Binder.Bind <IDialogService, DialogService>();

            // Clipboard
            Binder.Bind <IClipboardService, ClipboardService>();

            // FFmpeg Log
            Binder.BindSingleton <FFmpegLog>();

            // Check if Bass is available
            if (BassAudioSource.Available)
            {
                Binder.Bind <AudioSource, BassAudioSource>();
            }
            else
            {
                Binder.Bind <AudioSource, NoAudioSource>();
            }
        }
Ejemplo n.º 8
0
 public void RaiseClick()
 {
     ServiceProvider.LaunchFile(new ProcessStartInfo(_fileName));
 }
Ejemplo n.º 9
0
        public MainWindow()
        {
            Instance = this;

            FFmpegService.FFmpegDownloader += () =>
            {
                if (_downloader == null)
                {
                    _downloader         = new FFmpegDownloaderWindow();
                    _downloader.Closed += (Sender, Args) => _downloader = null;
                }

                _downloader.ShowAndFocus();
            };

            InitializeComponent();

            var mainModel = ServiceProvider.Get <MainModel>();

            mainModel.Init(!App.CmdOptions.NoPersist, !App.CmdOptions.Reset, !App.CmdOptions.NoHotkeys);
            ServiceProvider.Get <HotkeyActionRegisterer>().Register();
            ServiceProvider.Get <TimerModel>().Init();

            var listener = new HotkeyListener();

            var hotkeyManager = ServiceProvider.Get <HotKeyManager>();

            listener.HotkeyReceived += Id => hotkeyManager.ProcessHotkey(Id);

            ServiceProvider.Get <HotKeyManager>().HotkeyPressed += Service =>
            {
                switch (Service)
                {
                case ServiceName.OpenImageEditor:
                    new ImageEditorWindow().ShowAndFocus();
                    break;

                case ServiceName.ShowMainWindow:
                    this.ShowAndFocus();
                    break;
                }
            };

            Loaded += (Sender, Args) =>
            {
                RepositionWindowIfOutside();

                SetupWebcamPreview();

                mainModel.ViewLoaded();
            };

            if (App.CmdOptions.Tray || ServiceProvider.Get <Settings>().Tray.MinToTrayOnStartup)
            {
                Hide();
            }

            Closing += (Sender, Args) =>
            {
                if (!TryExit())
                {
                    Args.Cancel = true;
                }
            };
        }
Ejemplo n.º 10
0
        void Image_MouseUp(object sender, MouseButtonEventArgs e)
        {
            ServiceProvider.LaunchFile(new ProcessStartInfo(FilePath));

            CloseButton_Click();
        }
Ejemplo n.º 11
0
 static FFmpegSettings GetSettings() => ServiceProvider.Get <FFmpegSettings>();
Ejemplo n.º 12
0
        private void Pause_Click(object sender, RoutedEventArgs e)
        {
            RecordingViewModel rvm = ServiceProvider.Get <RecordingViewModel>();

            rvm.OnRecordPause();
        }