Added Quick Sync support to video converter tool

This commit is contained in:
Jaex 2023-05-11 16:30:50 +03:00
parent 459e2ee357
commit f8751e3196
4 changed files with 37 additions and 1 deletions

View file

@ -47,6 +47,10 @@ public enum ConverterVideoCodecs
h264_nvenc,
[Description("HEVC / NVENC")]
hevc_nvenc,
[Description("H.264 / Quick Sync")]
h264_qsv,
[Description("HEVC / Quick Sync")]
hevc_qsv,
[Description("VP8")]
vp8,
[Description("VP9")]

View file

@ -95,6 +95,8 @@ private void UpdateOptions()
case ConverterVideoCodecs.x265:
case ConverterVideoCodecs.h264_nvenc:
case ConverterVideoCodecs.hevc_nvenc:
case ConverterVideoCodecs.h264_qsv:
case ConverterVideoCodecs.hevc_qsv:
case ConverterVideoCodecs.vp8:
case ConverterVideoCodecs.vp9:
case ConverterVideoCodecs.av1:
@ -113,11 +115,13 @@ private void UpdateOptions()
{
case ConverterVideoCodecs.x264:
case ConverterVideoCodecs.h264_nvenc:
case ConverterVideoCodecs.h264_qsv:
tbVideoQuality.Minimum = FFmpegCLIManager.x264_min;
tbVideoQuality.Maximum = FFmpegCLIManager.x264_max;
break;
case ConverterVideoCodecs.x265:
case ConverterVideoCodecs.hevc_nvenc:
case ConverterVideoCodecs.hevc_qsv:
tbVideoQuality.Minimum = FFmpegCLIManager.x265_min;
tbVideoQuality.Maximum = FFmpegCLIManager.x265_max;
break;

View file

@ -315,7 +315,7 @@
<value>160, 84</value>
</data>
<data name="cbVideoEncoder.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 21</value>
<value>144, 21</value>
</data>
<data name="cbVideoEncoder.TabIndex" type="System.Int32, mscorlib">
<value>9</value>

View file

@ -150,6 +150,30 @@ public string GetFFmpegArgs()
args.Append("-b:v 0 ");
}
break;
case ConverterVideoCodecs.h264_qsv: // https://trac.ffmpeg.org/wiki/Hardware/QuickSync
args.Append("-c:v h264_qsv ");
args.Append("-preset medium ");
if (VideoQualityUseBitrate)
{
args.Append($"-b:v {VideoQualityBitrate}k ");
}
else
{
args.Append($"-crf {VideoQuality.Clamp(FFmpegCLIManager.x264_min, FFmpegCLIManager.x264_max)} ");
}
break;
case ConverterVideoCodecs.hevc_qsv: // https://trac.ffmpeg.org/wiki/Hardware/QuickSync
args.Append("-c:v hevc_qsv ");
args.Append("-preset medium ");
if (VideoQualityUseBitrate)
{
args.Append($"-b:v {VideoQualityBitrate}k ");
}
else
{
args.Append($"-crf {VideoQuality.Clamp(FFmpegCLIManager.x265_min, FFmpegCLIManager.x265_max)} ");
}
break;
case ConverterVideoCodecs.vp8: // https://trac.ffmpeg.org/wiki/Encode/VP8
args.Append("-c:v libvpx ");
if (VideoQualityUseBitrate)
@ -218,6 +242,8 @@ public string GetFFmpegArgs()
case ConverterVideoCodecs.x265:
case ConverterVideoCodecs.h264_nvenc:
case ConverterVideoCodecs.hevc_nvenc:
case ConverterVideoCodecs.h264_qsv:
case ConverterVideoCodecs.hevc_qsv:
args.Append("-c:a aac ");
args.Append("-b:a 128k ");
break;
@ -254,6 +280,8 @@ public string GetFileExtension()
case ConverterVideoCodecs.x265:
case ConverterVideoCodecs.h264_nvenc:
case ConverterVideoCodecs.hevc_nvenc:
case ConverterVideoCodecs.h264_qsv:
case ConverterVideoCodecs.hevc_qsv:
return "mp4";
case ConverterVideoCodecs.vp8:
case ConverterVideoCodecs.vp9: