diff --git a/ShareX.ScreenCaptureLib/Enums.cs b/ShareX.ScreenCaptureLib/Enums.cs
index 23f5d7f02..220144385 100644
--- a/ShareX.ScreenCaptureLib/Enums.cs
+++ b/ShareX.ScreenCaptureLib/Enums.cs
@@ -96,7 +96,11 @@ public enum FFmpegVideoCodec
[Description("Animated GIF (gif)")]
gif,
[Description("x265 (mp4)")]
- libx265
+ libx265,
+ [Description("H.264 NVENC (mp4)")]
+ h264_nvenc,
+ [Description("HEVC NVENC (mp4)")]
+ hevc_nvenc
}
public enum FFmpegPreset
diff --git a/ShareX.ScreenCaptureLib/Screencast/FFmpegOptions.cs b/ShareX.ScreenCaptureLib/Screencast/FFmpegOptions.cs
index eaa315f28..b48623fca 100644
--- a/ShareX.ScreenCaptureLib/Screencast/FFmpegOptions.cs
+++ b/ShareX.ScreenCaptureLib/Screencast/FFmpegOptions.cs
@@ -92,6 +92,8 @@ public string Extension
{
case FFmpegVideoCodec.libx264:
case FFmpegVideoCodec.libx265:
+ case FFmpegVideoCodec.h264_nvenc:
+ case FFmpegVideoCodec.hevc_nvenc:
case FFmpegVideoCodec.gif:
return "mp4";
case FFmpegVideoCodec.libvpx:
diff --git a/ShareX.ScreenCaptureLib/Screencast/FFmpegOptionsForm.resx b/ShareX.ScreenCaptureLib/Screencast/FFmpegOptionsForm.resx
index d2becd7c4..26534eacc 100644
--- a/ShareX.ScreenCaptureLib/Screencast/FFmpegOptionsForm.resx
+++ b/ShareX.ScreenCaptureLib/Screencast/FFmpegOptionsForm.resx
@@ -455,7 +455,7 @@ Otherwise it can't keep up with recording and a lot of frame drops will happen.<
120, 20
- 104, 21
+ 160, 21
1
diff --git a/ShareX.ScreenCaptureLib/Screencast/ScreencastOptions.cs b/ShareX.ScreenCaptureLib/Screencast/ScreencastOptions.cs
index 478c5cd9d..86050100f 100644
--- a/ShareX.ScreenCaptureLib/Screencast/ScreencastOptions.cs
+++ b/ShareX.ScreenCaptureLib/Screencast/ScreencastOptions.cs
@@ -179,6 +179,12 @@ public string GetFFmpegArgs(bool isCustom = false)
case FFmpegVideoCodec.libxvid: // https://trac.ffmpeg.org/wiki/Encode/MPEG-4
args.AppendFormat("-qscale:v {0} ", FFmpeg.XviD_qscale);
break;
+ case FFmpegVideoCodec.h264_nvenc: // https://trac.ffmpeg.org/wiki/HWAccelIntro#NVENC
+ case FFmpegVideoCodec.hevc_nvenc:
+ args.AppendFormat("-preset {0} ", "default"); // TODO: Add preset option
+ args.AppendFormat("-b:v {0}k ", "10000"); // TODO: Add bitrate option
+ args.AppendFormat("-pix_fmt {0} ", "yuv420p");
+ break;
case FFmpegVideoCodec.gif:
args.AppendFormat("-preset {0} ", FFmpegPreset.ultrafast);
args.AppendFormat("-tune {0} ", FFmpegTune.zerolatency);