예제 #1
0
        public void Setup()
        {
            _ffmpegFileName    = "/usr/sbin/ffmpeg";
            _processRunner     = Substitute.For <IProcessRunner>();
            _argumentGenerator = Substitute.For <IFFmpegArgumentGenerator>();
            _configManager     = Substitute.For <IConfigManager <FFmpegConfig> >();
            _fileSystem        = Substitute.For <IFileSystem>();
            _fileService       = Substitute.For <IFile>();
            _pathService       = Substitute.For <IPath>();
            _imageCount        = 3;
            _timeout           = TimeSpan.FromMilliseconds(10);
            _imageGenerator    = new PreviewImageGenerator(_ffmpegFileName,
                                                           _processRunner,
                                                           _configManager,
                                                           _argumentGenerator,
                                                           _fileSystem,
                                                           _imageCount,
                                                           _timeout);
            _tempPath     = "/Users/fred/temp";
            _transcodeJob = new TranscodeJob()
            {
                SourceInfo = new MediaInfo()
                {
                    FileName = "source",
                    Duration = TimeSpan.FromHours(1),
                    Streams  = new StreamInfo[]
                    {
                        new VideoStreamInfo()
                        {
                            Index = 0
                        }
                    }
                },
                OutputFileName = "destination",
                Streams        = new OutputStream[]
                {
                    new VideoOutputStream()
                    {
                        SourceStreamIndex = 0
                    }
                }
            };
            _ffmpegJobs = new List <FFmpegJob>();

            _argumentGenerator.When(x => x.GenerateArguments(Arg.Any <FFmpegJob>()))
            .Do(x => _ffmpegJobs.Add(x[0] as FFmpegJob));
            _fileSystem.File.Returns(_fileService);
            _fileSystem.Path.Returns(_pathService);
            _pathService.GetTempPath().Returns(_tempPath);
            _pathService.Combine(Arg.Any <string>(), Arg.Any <string>()).Returns(x => string.Join('/', x.Args()));
        }
예제 #2
0
        public async Task DetectGeneratesArguments()
        {
            FFmpegJob job = null;

            _argumentGenerator.When(x => x.GenerateArguments(Arg.Any <FFmpegJob>()))
            .Do(x => job = x[0] as FFmpegJob);

            await _detector.Detect(_mediaInfo);

            Assert.IsNotNull(job);
            Assert.AreEqual(TimeSpan.FromHours(1), job.StartTime);
            Assert.AreEqual(_mediaInfo.FileName, job.InputFileName);
            Assert.AreEqual(100, job.FrameCount);
            Assert.AreEqual(1, job.Filters?.Count);
            Assert.AreEqual("idet", (job.Filters[0] as Filter).Name);
        }
예제 #3
0
        public void Setup()
        {
            _ffmpegFileName    = "usr/sbin/ffmpeg";
            _process           = Substitute.For <IProcess>();
            _argumentGenerator = Substitute.For <IFFmpegArgumentGenerator>();
            _configManager     = Substitute.For <IConfigManager <FFmpegConfig> >();
            _transcoder        = new MediaTranscoder(_ffmpegFileName,
                                                     () => _process,
                                                     _configManager,
                                                     _argumentGenerator);

            _argumentGenerator.When(x => x.GenerateArguments(Arg.Any <FFmpegJob>()))
            .Do(x => _ffmpegJob = x[0] as FFmpegJob);

            _videoSource = new VideoStreamInfo()
            {
                Index = 0
            };
            _videoOutput = new VideoOutputStream()
            {
                SourceStreamIndex = 0
            };
            _transcodeJob = new TranscodeJob()
            {
                SourceInfo = new MediaInfo()
                {
                    FileName = "source",
                    Streams  = new List <StreamInfo>()
                    {
                        _videoSource
                    }
                },
                OutputFileName = "destination",
                Streams        = new List <OutputStream>()
                {
                    _videoOutput
                }
            };
            _ffmpegJob = null;
        }