Use only bitrate for nvenc, amf and qsv

This commit is contained in:
Jaex 2023-10-01 07:30:01 +03:00
parent a85293c932
commit 5b781a8a49
2 changed files with 16 additions and 64 deletions

View file

@ -93,12 +93,6 @@ private void UpdateOptions()
{
case ConverterVideoCodecs.x264:
case ConverterVideoCodecs.x265:
case ConverterVideoCodecs.h264_nvenc:
case ConverterVideoCodecs.hevc_nvenc:
case ConverterVideoCodecs.h264_amf:
case ConverterVideoCodecs.hevc_amf:
case ConverterVideoCodecs.h264_qsv:
case ConverterVideoCodecs.hevc_qsv:
case ConverterVideoCodecs.vp8:
case ConverterVideoCodecs.vp9:
case ConverterVideoCodecs.av1:
@ -107,6 +101,16 @@ private void UpdateOptions()
tbVideoQuality.Visible = lblVideoQualityValue.Visible = lblVideoQualityLower.Visible = lblVideoQualityHigher.Visible = !Options.VideoQualityUseBitrate;
nudVideoQualityBitrate.Visible = lblVideoQualityBitrateHint.Visible = Options.VideoQualityUseBitrate;
break;
case ConverterVideoCodecs.h264_nvenc:
case ConverterVideoCodecs.hevc_nvenc:
case ConverterVideoCodecs.h264_amf:
case ConverterVideoCodecs.hevc_amf:
case ConverterVideoCodecs.h264_qsv:
case ConverterVideoCodecs.hevc_qsv:
cbVideoQualityUseBitrate.Visible = false;
tbVideoQuality.Visible = lblVideoQualityValue.Visible = lblVideoQualityLower.Visible = lblVideoQualityHigher.Visible = false;
nudVideoQualityBitrate.Visible = lblVideoQualityBitrateHint.Visible = true;
break;
default:
cbVideoQualityUseBitrate.Visible = tbVideoQuality.Visible = lblVideoQualityValue.Visible = lblVideoQualityLower.Visible =
lblVideoQualityHigher.Visible = nudVideoQualityBitrate.Visible = lblVideoQualityBitrateHint.Visible = false;
@ -116,16 +120,10 @@ private void UpdateOptions()
switch (Options.VideoCodec)
{
case ConverterVideoCodecs.x264:
case ConverterVideoCodecs.h264_nvenc:
case ConverterVideoCodecs.h264_amf:
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_amf:
case ConverterVideoCodecs.hevc_qsv:
tbVideoQuality.Minimum = FFmpegCLIManager.x265_min;
tbVideoQuality.Maximum = FFmpegCLIManager.x265_max;
break;

View file

@ -123,84 +123,38 @@ public string GetFFmpegArgs()
args.Append("-preset p4 ");
args.Append("-tune hq ");
args.Append("-profile:v high ");
if (VideoQualityUseBitrate)
{
args.Append($"-b:v {VideoQualityBitrate}k ");
}
else
{
args.Append("-rc vbr ");
args.Append($"-cq {VideoQuality.Clamp(FFmpegCLIManager.x264_min, FFmpegCLIManager.x264_max)} ");
args.Append("-b:v 0 ");
}
args.Append($"-b:v {VideoQualityBitrate}k ");
break;
case ConverterVideoCodecs.hevc_nvenc: // https://trac.ffmpeg.org/wiki/HWAccelIntro#NVENC
args.Append("-c:v hevc_nvenc ");
args.Append("-preset p4 ");
args.Append("-tune hq ");
args.Append("-profile:v main ");
if (VideoQualityUseBitrate)
{
args.Append($"-b:v {VideoQualityBitrate}k ");
}
else
{
args.Append("-rc vbr ");
args.Append($"-cq {VideoQuality.Clamp(FFmpegCLIManager.x265_min, FFmpegCLIManager.x265_max)} ");
args.Append("-b:v 0 ");
}
args.Append($"-b:v {VideoQualityBitrate}k ");
break;
case ConverterVideoCodecs.h264_amf:
args.Append("-c:v h264_amf ");
args.Append("-usage transcoding ");
args.Append("-profile main ");
args.Append("-quality balanced ");
if (VideoQualityUseBitrate)
{
args.Append($"-b:v {VideoQualityBitrate}k ");
}
else
{
// TODO: CRF?
}
args.Append($"-b:v {VideoQualityBitrate}k ");
break;
case ConverterVideoCodecs.hevc_amf:
args.Append("-c:v hevc_amf ");
args.Append("-usage transcoding ");
args.Append("-profile main ");
args.Append("-quality balanced ");
if (VideoQualityUseBitrate)
{
args.Append($"-b:v {VideoQualityBitrate}k ");
}
else
{
// TODO: CRF?
}
args.Append($"-b:v {VideoQualityBitrate}k ");
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)} ");
}
args.Append($"-b:v {VideoQualityBitrate}k ");
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)} ");
}
args.Append($"-b:v {VideoQualityBitrate}k ");
break;
case ConverterVideoCodecs.vp8: // https://trac.ffmpeg.org/wiki/Encode/VP8
args.Append("-c:v libvpx ");