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);