Skip to content
Snippets Groups Projects
Select Git revision
  • 8aac331dcb4f3690cdcc76c79463963ba13a232f
  • master default protected
  • th/emacs-gtk
  • th/py3-pkg-user-scripts
4 results

software.yml

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    screencap-ffmpeg.sh 2.16 KiB
    #!/bin/bash
    
    # Dieses Skript verwendet avconv oder ffmpeg um den Bildschirm aufzunehmen.
    # Wenn AUDIO=1 gesetzt ist wird auch der Ton aufgenommen.
    # In die Variable $DEVICE wird der Bezeichner des Anschlusse eingetragen, von dem aufgenommen werden soll (siehe xrandr).
    # Erster und einziger, optionaler, Parameter ist ein Präfix für die Datei, in die aufgenommen wird.
    # Der Dateiname lautet: $prefix-YYYY-MM-DD-HH-MM-SS-nummer.mov
    # Teilweise gibt es Probleme mit der Syncronität Bild<->Ton, daher dringen auf den Präsentationslaptops ausprobieren.
    # Bei Verwendung von CODEC="x264" kann bei langsamen Geräten LOSSLESS=1 helfen, dann wird zwar die Ausgabedatei größer, aber der Rechenaufwand sollte geringer sein.
    # Besser ist die Verwendung von CODEC="qtrle".
    # Manchmal gibts libfaac nicht, dann eine der anderen Optionen für ACODEC ausprobieren.
    
    DEVICE="VGA"
    AUDIO=1
    FPS=15
    LOSSLESS=1
    #CODEC="x264"
    CODEC="qtrle"
    #ACODEC="libfaac"
    ACODEC="aac -strict -2"
    #ACODEC="libvo_aacenc"
    #ACODEC="pcm_s16le" # Uncompressed, only use, if nothing other works!
    
    info=$(xrandr | grep $DEVICE)
    if [ -z "$info" ] || (echo $info | grep disconnected)
    	then
    	echo "Device $DEVICE not connected or not existent - check xrandr"
    	exit 1
    fi
    res="$(echo $info | grep -Eo '[0-9]+x[0-9]+')"
    pos=$(echo $info | grep -Eo '\+[0-9]+\+[0-9]+')
    
    if [ "$1" == "" ]
    	then
    	prefix=""
    	else
    	prefix=$1-
    fi
    
    counter=0
    file=${prefix}$(date +%Y-%m-%d-%H-%M-%S)-$counter.mov
    while [ -e $file ]
    	do
    	((counter=counter+1))
    	file=${prefix}$(date +%Y-%m-%d-%H-%M-%S)-$counter.mov
    done
    
    if which avconv
    	then
    	prog=avconv
    elif which ffmpeg
    	then
    	prog=ffmpeg
    else
    	echo "Weder avconv, noch ffmpeg gefunden!"
    	exit
    fi
    
    if [ $AUDIO -eq 1 ]
    	then
    	audiocmd="-f alsa -ac 2 -i hw:0,0 -c:a ${ACODEC}"
    else
    	audiocmd="-an"
    fi
    
    if [ $LOSSLESS -eq 1 ]
    	then
    	losslesscmd="-qp 0 -crf 0 -tune stillimage"
    fi
    
    if [ $CODEC = "qtrle" ]
    	then
    	videocmd="-c:v qtrle -g 150 "
    elif [ $CODEC = "x264" ]
    	then
    	videocmd="-c:v libx264 $losslesscmd -pix_fmt yuv420p -preset:v ultrafast"
    else
    	echo "No valid Codec, for valid codecs see header"
    	exit 1
    fi
    
    cmd="$prog -f x11grab -s $res -r $FPS -i :0.0$pos -r $FPS $audiocmd $videocmd $file"
    echo "Command: $cmd"
    $cmd