-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscreencast
More file actions
executable file
·40 lines (34 loc) · 1013 Bytes
/
screencast
File metadata and controls
executable file
·40 lines (34 loc) · 1013 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/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:
n=1
while [[ -f $HOME/screencast$n.mkv ]]
do
n=$((n+1))
done
filename="$HOME/screencast$n.mkv"
# For Pulseaudio with ALSA:
record_pulse() { \
echo recording 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 &
# Updating i3blocks recording icon:
echo ⏺️ > ~/.recordingicon && pkill -RTMIN+9 i3blocks