betlog

recordDesktop-START_embed-nonSuspendedOutputs_wav-nonSuspendedInputs.sh

Oct 30th, 2019
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.77 KB | None | 0 0
  1. #!/bin/bash
  2. # BETLOG - 2019-10-25--16-24-07
  3. #
  4. # ------- generic
  5. # /home/user/documents/scripts/audio/listAudioSources.sh
  6. AUDIOPREF_OUT="alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor"
  7. AUDIOPREF_MIC="alsa_input.pci-0000_00_1b.0.analog-stereo"
  8. OUTPUTPATH="/home/user/.steamdata/video"
  9. MODULENULLSINKNAME="combinedSinks"
  10. FRAMERATE=60.00 #59.94006   #30 #29.970030
  11. VIDEOCODEC=h264_nvenc
  12. # ========
  13. if [[ $(pgrep ffmpeg) ]];then
  14.     paplay --volume=32768 --device=${AUDIOPREF_OUT/.monitor/} "/home/user/music/audio/_all-alarms-notifications-ringtones/warzone2100-beacon.ogg" 1> /dev/null    
  15.     kdialog --title "Recording Desktop" --passivepopup "ALREADY RECORDING" 3
  16.     exit
  17. fi
  18. paplay --volume=32768 --device=${AUDIOPREF_OUT/.monitor/} "/home/user/music/audio/_all-alarms-notifications-ringtones/bell.oga" 1> /dev/null
  19. title="_$(xdotool getwindowname $(xdotool getactivewindow 2> /dev/null) 2> /dev/null|sed 's/[^[:alnum:]]//g')"
  20. resolution=$(xrandr | grep -m1 "*" | awk '{print $1}')
  21. msg="\\n"
  22. # ------- combinedSinks - NON-SUSPENDED outputs
  23. # ------- wav - individual NON-SUSPENDED inputs
  24. pactl unload-module module-null-sink 2> /dev/null
  25. pactl load-module module-null-sink sink_name=$MODULENULLSINKNAME
  26. while read -r line; do
  27.     data=$(echo $line|sed 's/\.monitor//'|awk -F'.' '{print $1 " " $NF}')
  28.     type=$(echo $data|awk '{print $1}'|sed 's/alsa_//')
  29.     nameLong=$(echo $data|awk '{print $2}')
  30.     nameShort=$(echo $nameLong|sed 's/[^[:alnum:]]//g')    
  31.     msg+="$type: $nameLong\\n"    
  32.     if [[ $type == output ]];then
  33.         pactl load-module module-loopback sink=$MODULENULLSINKNAME source=$line
  34.     else
  35.         ffmpeg -f pulse -i "$line" "$OUTPUTPATH/$(date +%Y-%m-%d--%H-%M-%S.%3N)${title}_${nameShort}.wav" &        
  36. #         ffmpeg -f pulse -i "$line" -acodec copy "$OUTPUTPATH/$(date +%Y-%m-%d--%H-%M-%S.%3N)${title}_${nameShort}.wav" &        
  37.     fi
  38. done < <(pactl list sources short|grep -v -e SUSPENDED -e $MODULENULLSINKNAME|awk '{print $2}')
  39. # ------- embed combinedSinks audio
  40. ffmpeg \
  41. -hwaccel cuvid \
  42. -f pulse \
  43. -i $MODULENULLSINKNAME.monitor \
  44. -f x11grab \
  45. -s $resolution \
  46. -i :0.0 \
  47. -r $FRAMERATE \
  48. -vcodec $VIDEOCODEC \
  49. -b:v 0 \
  50. "$OUTPUTPATH/$(date +%Y-%m-%d--%H-%M-%S.%3N)${title}.mkv" &
  51. # ------- generic
  52. if [[ $! ]];then
  53.     [[ -L $0 ]] && name=$(basename $(readlink $0)) || name=$(basename $0)
  54.     kdialog --title "${name%%_*}" --passivepopup "$(echo ${name##*START_}|sed 's/.sh//')\\n$resolution@$FRAMERATE$msg" 3
  55. else
  56.     paplay --volume=32768 --device=${AUDIOPREF_OUT/.monitor/} "/home/user/music/audio/_all-alarms-notifications-ringtones/Wookie.mp3" 1> /dev/null
  57.     kdialog --title "Recording Desktop - ERROR" --passivepopup "Process not found" 3
  58. # ------- combinedSinks    
  59.     pactl unload-module module-loopback 2> /dev/null
  60.     pactl unload-module module-null-sink 2> /dev/null
  61. fi
Advertisement
Add Comment
Please, Sign In to add comment