Ejemplo n.º 1
0
        public override string GetArguments(string inputFileName, string outputFileName)
        {
            VideoParameters parms =
                VideoParameterOracle.GetParameters(inputFileName);

            if (parms == null)
            {
                return(GetSimpleArguments(inputFileName, outputFileName));
            }
            else
            {
                StringBuilder paramsBuilder = new StringBuilder();
                StringWriter  paramsWriter  = new StringWriter(paramsBuilder);
                if (parms.Height.HasValue && parms.Width.HasValue)
                {
                    paramsWriter.Write("-x {0} -y {1} ",
                                       parms.Width, parms.Height);
                }
                if (parms.VideoBitrate.HasValue && parms.AudioBitrate.HasValue)
                {
                    paramsWriter.Write("-V {0} -A {1} --two-pass ",
                                       parms.VideoBitrate, parms.AudioBitrate);
                }
                else
                {
                    paramsWriter.Write("--videoquality 8 --audioquality 6 ");
                }
                paramsWriter.Close();
                return(string.Format(
                           "\"{0}\" -o \"{1}\" {2} --frontend",
                           inputFileName, outputFileName, paramsBuilder.ToString()));
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Obtain size argument for FFMPEG, in -s WIDTHxHEIGHT format.
        /// If either dimension of the input video is larger than target
        /// size, this will resize it to fit into the target size.
        /// Otherwise will return a blank string.
        /// </summary>
        /// <param name="inputFileName"></param>
        /// <param name="targetSize"></param>
        /// <returns></returns>
        protected string GetSizeArgument(string inputFileName,
                                         VideoSize targetSize)
        {
            VideoParameters parms =
                VideoParameterOracle.GetParameters(inputFileName);
            VideoSize size    = parms == null ? null : parms.VideoSize;
            string    sizeArg = "";

            if (size != null && size.CompareTo(targetSize) > 0)
            {
                float widthRatio  = (float)size.Width / targetSize.Width;
                float heightRatio = (float)size.Height / targetSize.Height;
                float ratio       = Math.Max(widthRatio, heightRatio);
                sizeArg = string.Format("-s {0}x{1}",
                                        RoundEven((int)(size.Width / ratio)),
                                        RoundEven((int)(size.Height / ratio)));
            }
            return(sizeArg);
        }