49 lines
1.4 KiB
Bash
Executable File
49 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
record () {
|
|
## Options
|
|
frameRate=60 # FPS
|
|
audioQuality=10 # Opus Qual - Bad 0 <> 10 Good
|
|
videoQuality=15 # H264 QVal - Lower is better
|
|
recordLocation=~/vids/yt
|
|
|
|
[ ! -d "$recordLocation" ] && mkdir "$recordLocation"
|
|
|
|
## Auto-Config - Use the last render device which should be the Intel GPU
|
|
currentRes=$(xdpyinfo | grep dimensions | awk '{print $2}')
|
|
|
|
ffmpeg -loglevel 16 -threads 6 -probesize 10M -framerate ${frameRate} -vsync 1 \
|
|
-thread_queue_size 512 -f x11grab -s ${currentRes} -r ${frameRate} -i :0.0 \
|
|
-thread_queue_size 512 -f pulse -ac 2 -channel_layout stereo -i default -c:a libopus -vbr on -compression_level ${audioQuality} \
|
|
-c:v h264_nvenc -qp ${videoQuality} "${recordLocation}/$(date +%y%m%d%H%M%S).mkv" > /tmp/recorder.log &
|
|
printf '%s\n' "$!" > /tmp/recording.pid
|
|
|
|
if [ "$?" -ne "0" ]; then
|
|
quick-notify "Recorder" "Failed to start recording"
|
|
quick-notify "Recorder" "Error: $(cat /tmp/recorder.log)"
|
|
else
|
|
touch /tmp/recording.lock
|
|
quick-notify "Recorder" "Started recording"
|
|
fi
|
|
}
|
|
|
|
stop () {
|
|
pid=$(cat /tmp/recording.pid)
|
|
|
|
kill $pid
|
|
|
|
if [ "$?" -ne "0" ];then
|
|
quick-notify "Recorder" "Failed to stop recording"
|
|
else
|
|
quick-notify "Recorder" "Stopped recording"
|
|
fi
|
|
|
|
rm /tmp/recording.pid /tmp/recording.lock /tmp/recorder.log
|
|
}
|
|
|
|
if [ -f "/tmp/recording.lock" ]; then
|
|
stop
|
|
else
|
|
record
|
|
fi
|