diff --git a/scripts/rec b/scripts/rec index a45c18b..0f72d4e 100755 --- a/scripts/rec +++ b/scripts/rec @@ -1,18 +1,24 @@ #!/bin/sh record() { + if test "$1" = "-s"; then + geometry=$(hacksaw -f 'crop=%w:%h:%x:%y,scale_vaapi=%w:%h') + else + geometry='scale_vaapi=1920:1080' + fi + sleep 2 withcap sys_admin -- ffmpeg -f alsa -i recorder \ -vaapi_device /dev/dri/renderD128 -f kmsgrab -i - -r 60 \ - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' \ - -c:v hevc_vaapi -qp 21 \ + -vf "hwmap=derive_device=vaapi,$geometry:format=nv12" \ + -c:v hevc_vaapi -qp 21 -rc_mode 1 \ -c:a libopus -b:a 96k -ac 2 -ar 48000 \ -y recording.mkv >/dev/null 2>&1 } if test ! -f recording.mkv; then echo recording in 2s... - record & + record "$@" & else pkill ffmpeg echo stopped recording