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())); } }
/// <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); }