From c243fe1fb80c0fdcdca599fff2fb998936b946ee Mon Sep 17 00:00:00 2001 From: Luke Smith Date: Sat, 8 Sep 2018 22:43:47 -0400 Subject: [PATCH] recording scripts now more robust --- .scripts/audio | 17 +++++------------ .scripts/killrecording | 2 +- .scripts/screencast | 24 ++++++------------------ .scripts/video | 10 ++++++---- 4 files changed, 18 insertions(+), 35 deletions(-) diff --git a/.scripts/audio b/.scripts/audio index 2e52e08..18f6004 100755 --- a/.scripts/audio +++ b/.scripts/audio @@ -1,29 +1,22 @@ -#!/bin/bash +#!/bin/sh # This script records audio. # 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/audio$n.flac ]] +while [ -f "$HOME/audio$n.flac" ] do n=$((n+1)) done filename="$HOME/audio$n.flac" -# For Pulseaudio with ALSA: -record_pulse() { \ ffmpeg \ -f alsa -i default \ -c:a flac \ -$filename ;} +"$filename" & -# For ALSA: -record_alsa() { \ -ffmpeg -y \ --f alsa -ar 44100 -i hw:1 \ -$filename ;} - -if [[ $(pgrep -x pulseaudio) ]]; then record_pulse; else record_alsa; fi & +# PID outputted for use by the killrecording script +echo $! > ~/.recordingpid # Updating i3blocks recording icon: echo 🎙️ > ~/.recordingicon && pkill -RTMIN+9 i3blocks diff --git a/.scripts/killrecording b/.scripts/killrecording index ed86bfa..ec9a698 100755 --- a/.scripts/killrecording +++ b/.scripts/killrecording @@ -1,6 +1,6 @@ #!/bin/sh -killall -e screencast audio video +kill -9 "$(cat ~/.recordingpid)" # Update i3bar. echo "" > ~/.recordingicon diff --git a/.scripts/screencast b/.scripts/screencast index b24beb2..6ffe854 100755 --- a/.scripts/screencast +++ b/.scripts/screencast @@ -1,38 +1,26 @@ -#!/bin/bash +#!/bin/sh # 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 ]] +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;}') \ +-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 ;} + -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 & +# PID outputted for use by the killrecording script +echo $! > ~/.recordingpid # Updating i3blocks recording icon: echo ⏺️ > ~/.recordingicon && pkill -RTMIN+9 i3blocks diff --git a/.scripts/video b/.scripts/video index 624581f..056694b 100755 --- a/.scripts/video +++ b/.scripts/video @@ -1,10 +1,10 @@ -#!/bin/bash +#!/bin/sh # This script records video. # It also names files smartly to prevent overwrites. # Picks a file name for the output file based on availability: -while [[ -f $HOME/video$n.mkv ]] +while [ -f "$HOME/video$n.mkv" ] do n=$((n+1)) done @@ -13,9 +13,11 @@ filename="$HOME/video$n.mkv" # The actual ffmpeg command: ffmpeg \ -f x11grab \ --s $(xdpyinfo | grep dimensions | awk '{print $2;}') \ +-s "$(xdpyinfo | grep dimensions | awk '{print $2;}')" \ -i :0.0 \ - -c:v libx264 -qp 0 -r 30 $filename & + -c:v libx264 -qp 0 -r 30 "$filename" & +# PID outputted for use by the killrecording script +echo $! > ~/.recordingpid # Updating i3blocks recording icon: echo ⏺️ > ~/.recordingicon && pkill -RTMIN+9 i3blocks