summaryrefslogtreecommitdiff
path: root/.i3/scripts/screencast
diff options
context:
space:
mode:
Diffstat (limited to '.i3/scripts/screencast')
-rwxr-xr-x.i3/scripts/screencast36
1 files changed, 36 insertions, 0 deletions
diff --git a/.i3/scripts/screencast b/.i3/scripts/screencast
new file mode 100755
index 0000000..cd37ab9
--- /dev/null
+++ b/.i3/scripts/screencast
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+# This script records a screencast with audio and video.
+# It runs an appropriate record script for either ALSA and Pulseaudio.
+# It also names files smartly to prevent overwrites.
+
+# Picks a file name for the output file based on availability:
+while [[ -f $HOME/screencast$n.mkv ]]
+do
+ n=$((n+1))
+done
+filename="$HOME/screencast$n.mkv"
+
+# For Pulseaudio with ALSA:
+record_pulse() { \
+ffmpeg -y \
+-f x11grab \
+-framerate 60 \
+-s $(xdpyinfo | grep dimensions | awk '{print $2;}') \
+-i :0.0 \
+-f alsa -i default \
+-r 30 \
+ -c:v libx264rgb -crf 0 -preset ultrafast -c:a flac $filename ;}
+
+# For ALSA:
+record_alsa() { \
+ffmpeg -y \
+-f x11grab \
+-s $(xdpyinfo | grep dimensions | awk '{print $2;}') \
+-i :0.0 \
+-thread_queue_size 1024 \
+ -f alsa -ar 44100 -i hw:1 \
+ -c:v libx264 -r 30 -c:a flac $filename ;}
+
+
+if [[ $(pgrep -x pulseaudio) ]]; then record_pulse; else record_alsa; fi