Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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());
        }