コード例 #1
0
        /// <summary>
        /// Builds parameters string from <see cref="ArgumentsContainer"/> that would be passed to ffmpeg process
        /// </summary>
        /// <param name="container">Container of arguments</param>
        /// <param name="input">Input file</param>
        /// <param name="output">Output file</param>
        /// <returns>Parameters string</returns>
        public string BuildArguments(ArgumentsContainer container, FileInfo input, FileInfo output)
        {
            CheckContainerException(container);
            CheckExtensionOfOutputExtension(container, output);
            FFMpegHelper.ConversionExceptionCheck(input, output);


            StringBuilder sb = new StringBuilder();

            var inputA  = new InputArgument(input);
            var outputA = new OutputArgument();

            sb.Append(inputA.GetStringValue().Trim() + " ");

            foreach (var a in container)
            {
                if (!IsInputOrOutput(a.Key))
                {
                    sb.Append(a.Value.GetStringValue().Trim() + " ");
                }
            }

            sb.Append(outputA.GetStringValue().Trim());

            var overrideArg = container.Find <OverrideArgument>();

            if (overrideArg != null)
            {
                sb.Append(" " + overrideArg.GetStringValue().Trim());
            }

            return(sb.ToString());
        }
コード例 #2
0
        /// <summary>
        /// Builds parameters string from <see cref="ArgumentsContainer"/> that would be passed to ffmpeg process
        /// </summary>
        /// <param name="container">Container of arguments</param>
        /// <returns>Parameters string</returns>
        public string BuildArguments(ArgumentsContainer container)
        {
            if (!container.ContainsInputOutput())
            {
                throw new ArgumentException("No input or output parameter found", nameof(container));
            }

            CheckContainerException(container);

            StringBuilder sb = new StringBuilder();

            sb.Append(GetInput(container).GetStringValue().Trim() + " ");

            foreach (var a in container)
            {
                if (!IsInputOrOutput(a.Key))
                {
                    sb.Append(a.Value.GetStringValue().Trim() + " ");
                }
            }

            sb.Append(container[typeof(OutputArgument)].GetStringValue().Trim());

            var overrideArg = container.Find <OverrideArgument>();

            if (overrideArg != null)
            {
                sb.Append(" " + overrideArg.GetStringValue().Trim());
            }

            return(sb.ToString());
        }
コード例 #3
0
 private void CheckExtensionOfOutputExtension(ArgumentsContainer container, FileInfo output)
 {
     if (container.ContainsKey(typeof(VideoCodecArgument)))
     {
         var codec = (VideoCodecArgument)container[typeof(VideoCodecArgument)];
         FFMpegHelper.ExtensionExceptionCheck(output, FileExtension.ForCodec(codec.Value));
     }
 }
コード例 #4
0
 private Argument GetInput(ArgumentsContainer container)
 {
     if (container.ContainsKey(typeof(InputArgument)))
     {
         return(container[typeof(InputArgument)]);
     }
     else if (container.ContainsKey(typeof(ConcatArgument)))
     {
         return(container[typeof(ConcatArgument)]);
     }
     else
     {
         throw new ArgumentException("No inputs found");
     }
 }
コード例 #5
0
 private void CheckContainerException(ArgumentsContainer container)
 {
     //TODO: implement arguments check
 }