Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- if [ "$1" = --help ]
- then
- echo "Usage: $0 [-m] [OUTPUT_FILE]"
- echo "Casts the screen to the given file. -m turns on the microphone."
- fi
- if [ "$1" = -m ]
- then
- MIC=true
- shift
- else
- MIC=false
- fi
- OUTFILE="$1"
- if [ x = "x$OUTFILE" ]
- then
- OUTFILE=screencast_`date +%Y-%m-%d_%H.%M.%S`.mp4
- fi
- COMBINED_SINK_NAME="combined"
- SOURCE_MIC=$(LANG=C pactl stat | sed -n -e "s/Default Source: \(.*\)/\1/p")
- SOURCE_OUTPUT=$(LANG=C pactl list | grep -A2 '^Source #' | grep 'Name: .*\.monitor$' | awk '{print $NF}' | tail -n1)
- module_combine_sources() {
- echo "Seting up null sink"
- LOADED_MODULES+=($(LANG=C pactl load-module module-null-sink \
- sink_name="$COMBINED_SINK_NAME"))
- echo "Connecting VoIP source to null sink"
- LOADED_MODULES+=($(LANG=C pactl load-module module-loopback \
- source_dont_move=true sink_dont_move=true \
- sink="$COMBINED_SINK_NAME" source="$SOURCE_OUTPUT"))
- if $MIC
- then
- echo "Connecting Default source to null sink"
- LOADED_MODULES+=($(LANG=C pactl load-module module-loopback \
- source_dont_move=true sink_dont_move=true \
- sink="$COMBINED_SINK_NAME" source="$SOURCE_MIC"))
- fi
- }
- unload_modules() {
- set +e
- for each in ${LOADED_MODULES[@]}; do
- pactl unload-module $each
- done
- }
- OUTRES="1366x768"
- FPS="20" # target FPS for x11grab
- QUAL="medium" # one of the many FFMPEG preset
- trap unload_modules EXIT
- module_combine_sources
- /opt/libav/bin/avconv \
- -f x11grab -s 1366x768 -r "25" -i :0.0 \
- -f pulse -i "$COMBINED_SINK_NAME.monitor" \
- -vcodec libx264 -s $OUTRES -preset $QUAL -acodec libmp3lame -ar 44100 -threads 4 -qscale 3 -b 712000 \
- -bufsize 512k -f mp4 "$OUTFILE"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement