/// <summary> /// Builds an argument string from the settings /// </summary> /// <returns>A string to be used as argument to Handbrake CLI</returns> public string Build() { var sb = new StringBuilder(); sb.Append($"--format {Format} "); if (MaxHeight > 0) { sb.Append($"--maxHeight {MaxHeight} "); } if (MaxWidth > 0) { sb.Append($"--maxWidth {MaxWidth} "); } if (WebOptimize) { sb.Append("--optimize "); } sb.Append($"--modulus {Modulus} "); sb.Append($"--{Anamorphic.Formatted()} "); sb.Append($"--encoder {Encoder} "); sb.Append($"--quality {VideoQuality} "); sb.Append($"--{FrameRateSetting} "); sb.Append($"--rate {FrameRate} "); sb.Append($"--aencoder {AudioEncoder.Formatted()} "); if (AudioEncoder == AudioEncoder.copy) { sb.Append($"--audio-copy-mask {AudioCopyMask.Formatted()} "); } if (AudioEncoder.ToString().StartsWith("copy")) { sb.Append($"--audio-fallback {AudioEncoderFallback.Formatted()} "); } sb.Append($"--mixdown {Mixdown.Formatted()} "); sb.Append($"--arate {AudioSampleRate.Formatted()} "); sb.Append($"--ab {AudioBitrate} "); sb.Append($"--{AudioTracks.Formatted()} "); sb.Append($"--gain {AudioGain} "); sb.Append($"--subtitle none "); if (TwoPass) { sb.Append("--two-pass "); if (TurboTwoPass && (Encoder == Encoder.x264 || Encoder == Encoder.x265)) { sb.Append("--turbo "); } } sb.Append($"--encoder-level {EncoderLevel.Formatted()} "); sb.Append("--verbose 0 "); return(sb.ToString()); }
public void SaveSettings() { if (iniFile != null) { iniFile.WriteValue("Settings", "AudioInputPath", AudioInputPath); iniFile.WriteValue("Settings", "AudioChannel", AudioChannel.ToString()); iniFile.WriteValue("Settings", "AudioBitRate", AudioBitRate.ToString()); iniFile.WriteValue("Settings", "AudioSampleRate", AudioSampleRate.ToString()); iniFile.WriteValue("Settings", "AudioFrameSize", AudioFrameSize.ToString()); iniFile.WriteValue("Settings", "Camera1_InputPath", Camera1_InputPath); iniFile.WriteValue("Settings", "Camera2_InputPath", Camera2_InputPath); iniFile.WriteValue("Settings", "VideoMixingMode", VideoMixingMode.ToString()); iniFile.WriteValue("Settings", "VideoOutputFormat", VideoOutputFormat.ToString()); iniFile.WriteValue("Settings", "VideoBitRate", VideoBitRate.ToString()); iniFile.WriteValue("Settings", "VideoFrameRate", VideoFrameRate.ToString()); } Log.WriteLine(ToString()); }
public static uint RecommendSampleFrameCount(Instance instance, AudioSampleRate sampleRate, uint requestedSampleFrameCount) => PPBAudioConfig.RecommendSampleFrameCount(instance, (PPAudioSampleRate)sampleRate, requestedSampleFrameCount);
/// <summary> /// A constructor that creates an audio config based on the given sample rate /// and frame count. If the rate and frame count aren't supported, the /// resulting resource will be is_null(). You can pass the result of /// RecommendSampleFrameCount() as the sample frame count. /// </summary> /// <param name="instance">The instance associated with this resource.</param> /// <param name="sampleRate">The sample rate <see cref="AudioSampleRate"/></param> /// <param name="sampleFrameCount">A uint frame count returned from the /// <code>RecommendSampleFrameCount</code> function.</param> public AudioConfig(Instance instance, AudioSampleRate sampleRate, uint sampleFrameCount) { handle = PPBAudioConfig.CreateStereo16Bit(instance, (PPAudioSampleRate)sampleRate, sampleFrameCount); SampleRate = sampleRate; SampleFrameCount = sampleFrameCount; }
public string[] ToStringArray() { List <string> parameters = new List <string>(); if (!string.IsNullOrEmpty(InputFile)) { parameters.Add("-i"); parameters.Add(InputFile); } if (VerbosityLevel >= 0) { parameters.Add("-v"); parameters.Add(VerbosityLevel.ToString()); } if (SecondsToSkip > 0) { TimeSpan skipDuration = TimeSpan.FromSeconds(SecondsToSkip); parameters.Add("-ss"); parameters.Add(string.Format("{0:hh\\:mm\\:ss\\.fff}", skipDuration)); } if (!string.IsNullOrEmpty(EarlyExtendedOptions)) { parameters.AddRange(EarlyExtendedOptions.Split(' ')); } if (!string.IsNullOrEmpty(OutputFormat)) { parameters.Add("-f"); parameters.Add(OutputFormat); } if (ExcludeVideo) { parameters.Add("-vn"); } else { if (!string.IsNullOrEmpty(VideoCodec)) { parameters.Add("-vcodec"); parameters.Add(VideoCodec); } if (VideoFramerate > 0) { parameters.Add("-r"); parameters.Add(VideoFramerate.ToString("F")); } if (!string.IsNullOrEmpty(VideoBitrate)) { parameters.Add("-b"); parameters.Add(VideoBitrate); } if (VideoQualityControl > 0) { parameters.Add("-crf"); parameters.Add(VideoQualityControl.ToString()); } if (!string.IsNullOrEmpty(VideoPreset)) { parameters.Add("-vpre"); parameters.Add(string.Format("{0}", VideoPreset)); } if ((VideoWidth != -1 || VideoHeight != -1) && (VideoWidth != 0 || VideoHeight != 0)) { parameters.Add("-vf"); parameters.Add(string.Format("scale={0}:{1}", VideoWidth, VideoHeight)); } } if (ExcludeAudio) { parameters.Add("-an"); } else { if (!string.IsNullOrEmpty(AudioCodec)) { parameters.Add("-acodec"); parameters.Add(AudioCodec); } if (AudioSampleRate > 0) { parameters.Add("-ar"); parameters.Add(AudioSampleRate.ToString()); } if (!string.IsNullOrEmpty(AudioBitrate)) { parameters.Add("-ab"); parameters.Add(AudioBitrate); } if (AudioChannels > 0) { parameters.Add("-ac"); parameters.Add(AudioChannels.ToString()); } } if (!string.IsNullOrEmpty(LateExtendedOptions)) { parameters.AddRange(LateExtendedOptions.Split(' ')); } if (VideoStreamIndex != -1) { parameters.Add("-map"); parameters.Add(string.Format("0:{0}", VideoStreamIndex)); } if (AudioStreamIndex != -1) { parameters.Add("-map"); parameters.Add(string.Format("0:{0}", AudioStreamIndex)); } if (!string.IsNullOrEmpty(OutputFile)) { parameters.Add(string.Format("\"{0}\"", OutputFile)); } return(parameters.ToArray()); }
public static string Formatted(this AudioSampleRate audioSampleRate) { return(audioSampleRate.ToString().TrimStart('_').Replace("_", ".")); }
/// <summary> /// Set audio sample rate /// </summary> /// <typeparam name="TTask"></typeparam> /// <param name="task"></param> /// <param name="audioSampleRate"></param> /// <returns></returns> public static TTask AudioSampleRate <TTask>(this TTask task, AudioSampleRate audioSampleRate) where TTask : FFmpegConvertTask { task.AppendCommand(" -ar {0} ", audioSampleRate.ToString().Replace("Hz", "")); return(task); }