-gst-launch-1.0 -v \
- ximagesrc use-damage=0 show-pointer=0 $XIMAGESRC_ARGS ! video/x-raw,framerate=25/1 ! \
- videoconvert ! videorate ! $VIDEO_CODEC ! queue ! mux. \
- matroskamux name=mux ! filesink location="$FILENAME"
- #pulsesrc ! audioconvert ! 'audio/x-raw,rate=44100,channels=2' ! queue ! mux. \
+ PA_IDS=$(pactl load-module module-null-sink)
+ trap 'exit 1' INT
+ trap 'trap INT; for pa_id in $PA_IDS; do pactl unload-module "$pa_id"; done' EXIT
+
+ SOURCES=$(pactl list short sources | cut -f 2 | grep -v "^null\.monitor$")
+ for source in $SOURCES;
+ do
+ MODULE_ID=$(pactl load-module module-loopback latency_msec=1 source="$source" sink=null)
+ PA_IDS="$MODULE_ID $PA_IDS"
+ done
+
+ pactl set-sink-mute null 0
+ fi
+
+ AUDIO_PIPELINE="pulsesrc device=null.monitor ! audioconvert ! audio/x-raw,rate=44100,channels=2 ! vorbisenc ! queue ! mux."
+ fi
+
+ gst-launch-1.0 -v -e \
+ matroskamux name=mux ! filesink location="$FILENAME" \
+ ximagesrc use-damage=0 show-pointer=$SHOW_POINTER $XIMAGESRC_ARGS ! video/x-raw,framerate=25/1 ! \
+ videoconvert ! videorate ! $VIDEO_CODEC ! queue ! mux. \
+ $AUDIO_PIPELINE
+fi