This commit is contained in:
fwastring 2026-03-29 15:23:37 +02:00
parent e413d301f6
commit b1552fe3de

View file

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