예제 #1
0
 public override void Apply(VideoWriterArgs writerArgs, FFmpegOutputOptionArgs outputOptionArgs)
 {
     outputOptionArgs.SetVideoCodec(Codecs.FFmpegVideoCodec.hevc_qsv)
         .AddArg("load_plugin", "hevc_hw")
         .AddArg("q", 2)
         .AddArg("preset:v", "veryfast");
 }
예제 #2
0
        public override void Apply(AudioWriterArgs audioWriterArgs, FFmpegOutputOptionArgs outputOptionArgs)
        {
            // quality: 0 (lowest) to 10 (highest)
            var qscale = (10 * (audioWriterArgs.AudioQuality - 1)) / 99;

            outputOptionArgs.SetAudioCodec(Codecs.FFmpegAudioCodec.libvorbis)
            .AddArg("qscale:a", qscale);
        }
예제 #3
0
        public override void Apply(AudioWriterArgs audioWriterArgs, FFmpegOutputOptionArgs outputOptionArgs)
        {
            // quality: 9 (lowest) to 0 (highest)
            var qscale = (100 - audioWriterArgs.AudioQuality) / 11;

            outputOptionArgs.SetAudioCodec(Codecs.FFmpegAudioCodec.libmp3lame)
            .AddArg("qscale:a", qscale);
        }
예제 #4
0
        public override void Apply(VideoWriterArgs writerArgs, FFmpegOutputOptionArgs outputOptionArgs)
        {
            // quality: 31 (lowest) to 1 (highest)
            var qscale = 31 - ((writerArgs.VideoQuality - 1) * 30) / 99;

            outputOptionArgs.SetVideoCodec(Codecs.FFmpegVideoCodec.libxvid)
            .AddArg("qscale:v", qscale);
        }
예제 #5
0
        public override void Apply(VideoWriterArgs videoWriterArgs, FFmpegOutputOptionArgs outputOptionArgs)
        {
            // quality: 63 (lowest) to 4 (highest)
            var crf = 63 - ((videoWriterArgs.VideoQuality - 1) * 59) / 99;

            outputOptionArgs.SetVideoCodec(Codecs.FFmpegVideoCodec.libvpx)
            .AddArg("crf", crf)
            .SetVideoBitrate("1M");
        }
예제 #6
0
        public override void Apply(VideoWriterArgs videoWriterArgs, FFmpegOutputOptionArgs outputOptionArgs)
        {
            // quality: 63 (lowest) to 0 (highest)
            var crf = (63 * (100 - videoWriterArgs.VideoQuality)) / 99;

            outputOptionArgs.SetVideoCodec(Codecs.FFmpegVideoCodec.libvpx_vp9)
            .AddArg("crf", crf)
            .SetVideoBitrate(0);
        }
예제 #7
0
        public override void Apply(AudioWriterArgs audioWriterArgs, FFmpegOutputOptionArgs outputOptionArgs)
        {
            // bitrate: 32k to 512k (steps of 32k)
            var b = 32 * (1 + (15 * (audioWriterArgs.AudioQuality - 1)) / 99);

            outputOptionArgs.SetAudioCodec(Codecs.FFmpegAudioCodec.aac)
            .AddArg("-strict -2")
            .SetAudioBitrate($"{b}k")
            ;
        }
예제 #8
0
        public override void Apply(VideoWriterArgs writerArgs, FFmpegOutputOptionArgs outputOptionArgs)
        {
            // quality: 51 (lowest) to 0 (highest)
            var crf = (51 * (100 - writerArgs.VideoQuality)) / 99;

            outputOptionArgs.SetVideoCodec(Codecs.FFmpegVideoCodec.libx264)
            .AddArg("crf", crf)
            //"yuv420p", "yuv444p"
            .SetPixFormat(Formats.FFmpegPixFormat.yuv420p)
            //"veryslow", "slower", "slow", "medium", "fast", "faster", "veryfast", "superfast", "ultrafast"
            .AddArg("preset", "ultrafast");
        }
예제 #9
0
 public abstract void Apply(VideoWriterArgs videoWriterArgs, FFmpegOutputOptionArgs outputArgs);
예제 #10
0
 public abstract void Apply(AudioWriterArgs audioWriterArgs, FFmpegOutputOptionArgs outputOptionArgs);