gst-screencast.sh: fix and improve audio recording
authorAntonio Ospite <ao2@ao2.it>
Wed, 29 Aug 2018 10:43:37 +0000 (12:43 +0200)
committerAntonio Ospite <ao2@ao2.it>
Wed, 29 Aug 2018 10:43:37 +0000 (12:43 +0200)
shell/gst-screencast.sh

index e601a62..dd4cd88 100755 (executable)
@@ -113,7 +113,25 @@ else
 
   if [ $CAPTURE_AUDIO -eq 1 ];
   then
 
   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 -e \
   fi
 
   gst-launch-1.0 -v -e \