2018-04-11 06:08:43 +00:00
|
|
|
#!/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 ;}
|
|
|
|
|
|
|
|
|
2018-06-16 01:48:42 +00:00
|
|
|
if [[ $(pgrep -x pulseaudio) ]]; then record_pulse; else record_alsa; fi &
|
|
|
|
# Updating i3blocks recording icon:
|
2018-08-04 17:49:54 +00:00
|
|
|
echo ⏺️ > ~/.recordingicon && pkill -RTMIN+9 i3blocks
|