Ejemplo n.º 1
0
        /// <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());
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
 public static uint RecommendSampleFrameCount(Instance instance,
                                              AudioSampleRate sampleRate,
                                              uint requestedSampleFrameCount)
 => PPBAudioConfig.RecommendSampleFrameCount(instance, (PPAudioSampleRate)sampleRate, requestedSampleFrameCount);
Ejemplo n.º 4
0
 /// <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());
        }
Ejemplo n.º 6
0
 public static string Formatted(this AudioSampleRate audioSampleRate)
 {
     return(audioSampleRate.ToString().TrimStart('_').Replace("_", "."));
 }
Ejemplo n.º 7
0
        /// <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);
        }