コード例 #1
0
ファイル: CommandTests.cs プロジェクト: davinx/HudlFfmpeg
        public void Command_OutputManager_Verify()
        {
            var command = CommandHelper.CreateCommand();

            Assert.Throws <ArgumentNullException>(() => command.OutputManager.Add(null));

            Assert.Throws <ArgumentException>(() => command.OutputManager.AddRange(null));

            Assert.DoesNotThrow(() => command.OutputManager.Add(CommandOutput.Create(Resource.From(AssetPath))));

            var assetsList = new List <IContainer>
            {
                Resource.From(AssetPath),
                Resource.From(AssetPath)
            };
            var commandList = new List <CommandOutput>
            {
                CommandOutput.Create(assetsList[0]),
                CommandOutput.Create(assetsList[1])
            };

            Assert.DoesNotThrow(() => command.OutputManager.AddRange(commandList));

            Assert.True(command.Outputs.Count == 3);
        }
コード例 #2
0
        public static CommandOutput SetupCommandOutputMaps <TOutputType>(CommandStage stage, SettingsCollection settings, string fileName)
            where TOutputType : class, IContainer, new()
        {
            var settingsCopy  = settings.Copy();
            var commandOutput = CommandOutput.Create(Resource.CreateOutput <TOutputType>(), settingsCopy);

            stage.StreamIdentifiers.ForEach(streamId =>
            {
                var theStream   = StreamFromStreamIdentifier(stage.Command, streamId);
                var theResource = CommandInputFromStreamIdentifier(stage.Command, streamId);

                if (theResource == null)
                {
                    commandOutput.Settings.Merge(new Map(streamId), FFmpegMergeOptionType.NewWins);
                }
                else
                {
                    var resourceIndex = IndexOfResource(stage.Command, streamId);

                    commandOutput.Settings.Merge(new Map(string.Format("{0}:{1}", resourceIndex, theStream.ResourceIndicator)),
                                                 FFmpegMergeOptionType.NewWins);
                }

                commandOutput.Resource.Streams.Add(theStream.Copy());
            });

            if (!string.IsNullOrWhiteSpace(fileName))
            {
                commandOutput.Resource.Name = fileName;
            }

            return(commandOutput);
        }
コード例 #3
0
        public static CommandOutput SetupCommandOutput <TOutputType>(FFmpegCommand command, SettingsCollection settings, string fileName)
            where TOutputType : class, IContainer, new()
        {
            var settingsCopy  = settings.Copy();
            var commandOutput = CommandOutput.Create(Resource.CreateOutput <TOutputType>(), settingsCopy);

            commandOutput.Resource.Streams.AddRange(command.Inputs.SelectMany(i => i.Resource.Streams.Select(s => s.Copy())));

            if (!string.IsNullOrWhiteSpace(fileName))
            {
                commandOutput.Resource.Name = fileName;
            }

            return(commandOutput);
        }
コード例 #4
0
ファイル: ManagersTests.cs プロジェクト: stantoxt/HudlFfmpeg
        public void CommandOutputManager_Verify()
        {
            var factory = CommandFactory.Create();

            var command = factory.CreateOutputCommand()
                          .WithInput <VideoStream>(Assets.Utilities.GetVideoFile())
                          .WithInput <VideoStream>(Assets.Utilities.GetVideoFile());

            var commandOutputManager = CommandOutputManager.Create(command.Command);

            var commandOutput = CommandOutput.Create(new Mp4());

            Assert.DoesNotThrow(() => commandOutputManager.Add(commandOutput));
            Assert.Throws <ArgumentException>(() => commandOutputManager.Add(commandOutput));
            Assert.True(command.Command.Outputs.Count == 1);
        }