From b1552fe3dec1b320b4dad0629dad9d17772acf48 Mon Sep 17 00:00:00 2001 From: fwastring Date: Sun, 29 Mar 2026 15:23:37 +0200 Subject: [PATCH] tweaked --- moduler/services/webcam-rtsp/default.nix | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/moduler/services/webcam-rtsp/default.nix b/moduler/services/webcam-rtsp/default.nix index b0ea347..40121d6 100644 --- a/moduler/services/webcam-rtsp/default.nix +++ b/moduler/services/webcam-rtsp/default.nix @@ -199,16 +199,25 @@ in streamCfg.bitrateKbps * 2 else null; - rateControlArgs = + x264RateControlArgs = if streamCfg.bitrateKbps != null then "-b:v ${toString streamCfg.bitrateKbps}k -maxrate ${toString maxrateKbps}k -bufsize ${toString bufsizeKbps}k" else ""; + vaapiRateControlArgs = + if streamCfg.bitrateKbps != null then + "-rc_mode VBR -b:v ${toString streamCfg.bitrateKbps}k -maxrate ${toString maxrateKbps}k -bufsize ${toString bufsizeKbps}k" + else + "-rc_mode CQP -qp ${toString streamCfg.vaapiQp}"; videoCodecArgs = if streamCfg.useVaapi then - "-vaapi_device ${streamCfg.vaapiDevice} -vf format=nv12,hwupload -c:v h264_vaapi -qp ${toString streamCfg.vaapiQp}" + "-vaapi_device ${streamCfg.vaapiDevice} -vf format=nv12,hwupload -c:v h264_vaapi ${vaapiRateControlArgs} -g ${ + toString (streamCfg.framerate * 2) + } -bf 0" else - "-vcodec libx264 -tune zerolatency -preset ${streamCfg.preset}"; + "-vcodec libx264 -tune zerolatency -preset ${streamCfg.preset} ${x264RateControlArgs} -g ${ + toString (streamCfg.framerate * 2) + } -bf 0"; in nameValuePair "webcam-rtsp-publisher-${sanitizeName streamName}" { description = "Publish webcam stream '${streamName}' to MediaMTX over RTSP"; @@ -221,7 +230,7 @@ in Restart = "always"; RestartSec = "2"; Environment = optional (streamCfg.vaapiDriver != null) "LIBVA_DRIVER_NAME=${streamCfg.vaapiDriver}"; - ExecStart = "${pkgs.ffmpeg}/bin/ffmpeg -hide_banner -loglevel warning -f v4l2 -framerate ${toString streamCfg.framerate} -video_size ${streamCfg.videoSize} -i ${streamCfg.device} ${videoCodecArgs} ${rateControlArgs} -f rtsp ${streamCfg.rtspUrl}"; + ExecStart = "${pkgs.ffmpeg}/bin/ffmpeg -hide_banner -loglevel warning -f v4l2 -framerate ${toString streamCfg.framerate} -video_size ${streamCfg.videoSize} -i ${streamCfg.device} ${videoCodecArgs} -f rtsp ${streamCfg.rtspUrl}"; }; } ) effectiveStreams;