X-Git-Url: https://git.ao2.it/experiments/gstreamer.git/blobdiff_plain/e5a87be86c4ddbdba8efe98a54e6bfe4d57dc459..bd5acb06bce3e09e4748084dc35a151e928c4e90:/shell/gst-screencast.sh diff --git a/shell/gst-screencast.sh b/shell/gst-screencast.sh index e9c03d0..dd4cd88 100755 --- a/shell/gst-screencast.sh +++ b/shell/gst-screencast.sh @@ -113,10 +113,28 @@ else if [ $CAPTURE_AUDIO -eq 1 ]; then - AUDIO_PIPELINE="pulsesrc ! audioconvert ! audio/x-raw,rate=44100,channels=2 ! queue ! mux." + # Record from everything + if ! pactl list short sinks | grep -q module-null-sink; + then + + 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 \ + 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. \