tIndent code with spaces - adamsgaard.dk - my academic webpage
 (HTM) git clone git://src.adamsgaard.dk/adamsgaard.dk
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit d37bc1b2ef006b946ae2337b44f5c18a4c9954f8
 (DIR) parent dd1fafe054a5b921d85668cb7a09a05eafe4bbe3
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Mon, 23 Mar 2020 07:50:39 +0100
       
       Indent code with spaces
       
       Diffstat:
         M pages/004-screencasts.txt           |     130 ++++++++++++++++----------------
       
       1 file changed, 65 insertions(+), 65 deletions(-)
       ---
 (DIR) diff --git a/pages/004-screencasts.txt b/pages/004-screencasts.txt
       t@@ -15,42 +15,42 @@ laptop audio.  I want to keep the fan noise low during recording
        by applying minimal compression and encoding. The following shell
        script serves the purpose of starting and stopping recording:
        
       -#!/bin/sh
       -lockfile=/tmp/screenrecord.pid
       -
       -startrecording() {
       -        out="$HOME/screenrecord-$(date '+%Y-%m-%d_%H:%M:%S').mkv"
       -        ffmpeg -y \
       -                -f x11grab \
       -                -framerate 60 \
       -                -s "$(xdpyinfo | grep dimensions | awk '{print $2}')" \
       -                -i $DISPLAY \
       -                -f sndio -i default \
       -                -r 30 \
       -                -c:v libx264rgb -crf 0 -preset ultrafast -c:a flac \
       -                "$out" >/dev/null 2>&1 &
       -        printf '%s' "$!" > "$lockfile"
       -
       -        sleep 1
       -        if [ ! -f "$out" ]; then
       -                echo 'error: ffmpeg recording did not start' >&2
       -                notify-send -u CRITICAL "${0##*/}" 'ffmpeg recording did not start'
       -                rm -f "$lockfile"
       -                exit 1
       -        fi
       -}
       -
       -stoprecording() {
       -        kill "$(cat "$lockfile")"
       -        rm -f "$lockfile"
       -        notify-send "${0##*/}" 'recording ended'
       -}
       -
       -if [ -f "$lockfile" ]; then
       -        stoprecording
       -else
       -        startrecording
       -fi
       +    #!/bin/sh
       +    lockfile=/tmp/screenrecord.pid
       +
       +    startrecording() {
       +        out="$HOME/screenrecord-$(date '+%Y-%m-%d_%H:%M:%S').mkv"
       +        ffmpeg -y \
       +            -f x11grab \
       +            -framerate 60 \
       +            -s "$(xdpyinfo | grep dimensions | awk '{print $2}')" \
       +            -i $DISPLAY \
       +            -f sndio -i default \
       +            -r 30 \
       +            -c:v libx264rgb -crf 0 -preset ultrafast -c:a flac \
       +            "$out" >/dev/null 2>&1 &
       +        printf '%s' "$!" > "$lockfile"
       +
       +        sleep 1
       +        if [ ! -f "$out" ]; then
       +            echo 'error: ffmpeg recording did not start' >&2
       +            notify-send -u CRITICAL "${0##*/}" 'ffmpeg recording did not start'
       +            rm -f "$lockfile"
       +            exit 1
       +        fi
       +    }
       +
       +    stoprecording() {
       +        kill "$(cat "$lockfile")"
       +        rm -f "$lockfile"
       +        notify-send "${0##*/}" 'recording ended'
       +    }
       +
       +    if [ -f "$lockfile" ]; then
       +        stoprecording
       +    else
       +        startrecording
       +    fi
        
        On Linux systems, the sound driver sndio should be replaced by alsa
        in the above ffmpeg(1) command. I have bound the above script to
       t@@ -60,13 +60,13 @@ in my X session.
        On OpenBSD I can show the webcam video feed with the [2]video(1)
        command. The following script toggles the video feed:
        
       -#!/bin/sh
       -# remember to `chown $USER /dev/video0`
       -if pgrep video >/dev/null 2>&1; then
       -        pkill video
       -else
       -        nohup video -s 320 >/dev/null 2>&1 &
       -fi
       +    #!/bin/sh
       +    # remember to `chown $USER /dev/video0`
       +    if pgrep video >/dev/null 2>&1; then
       +        pkill video
       +    else
       +        nohup video -s 320 >/dev/null 2>&1 &
       +    fi
        
        On Linux, the command mpv /dev/video0 can take place of the video(1)
        command above. I have the above script bound to the keybinding Alt+v
       t@@ -77,37 +77,37 @@ file to save bandwidth during upload. The following script encodes
        all input files and reduces file size to roughly 15% without
        concievable loss in quality:
        
       -#!/bin/sh
       +    #!/bin/sh
        
       -encode() {
       -        ffmpeg -y -i "$1" \
       -                -c:v libx264 -threads 0 -preset faster -pix_fmt yuv420p \
       -                -c:a aac -crf 10 \
       -                "${1%.*}_out.mp4"
       -}
       +    encode() {
       +        ffmpeg -y -i "$1" \
       +            -c:v libx264 -threads 0 -preset faster -pix_fmt yuv420p \
       +            -c:a aac -crf 10 \
       +            "${1%.*}_out.mp4"
       +    }
        
       -for f in "$@"; do
       -        encode "$f"
       -done
       +    for f in "$@"; do
       +        encode "$f"
       +    done
        
        If there is a delay between video and audio, this can also be
        adjusted using ffmpeg(1).  I correct for a 0.3 s delay that I
        encounter when recording on my laptop:
        
       -#!/bin/sh
       +    #!/bin/sh
        
       -synchronize() {
       -        ffmpeg -y -i "$1" \
       -                -itsoffset 0.300 \
       -                -i "$1" \
       -                -map 0:v -map 1:a \
       -                -c copy \
       -                "${1%.*}_out.${1##*.}"
       -}
       +    synchronize() {
       +        ffmpeg -y -i "$1" \
       +            -itsoffset 0.300 \
       +            -i "$1" \
       +            -map 0:v -map 1:a \
       +            -c copy \
       +            "${1%.*}_out.${1##*.}"
       +    }
        
       -for f in "$@"; do
       -        synchronize "$f"
       -done
       +    for f in "$@"; do
       +        synchronize "$f"
       +    done
        
        [3]Example screen recording using ffmpeg(1) and video(1) with the
        above scripts.