80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| screen=0
 | |
| microphone=0
 | |
| system_audio=0
 | |
| 
 | |
| select _sel in \
 | |
|     "Record screen" \
 | |
|     "Record microphone" \
 | |
|     "Record system audio" \
 | |
|     "Start recording" \
 | |
|     "Quit"
 | |
| do
 | |
|     case "$_sel" in
 | |
|         "Record screen") screen=1; ;;
 | |
|         "Record microphone") microphone=1; ;;
 | |
|         "Record system audio") system_audio=1; ;;
 | |
|         "Start recording") break; ;;
 | |
|         "Quit") exit 0; ;;
 | |
|     esac
 | |
| 
 | |
| [ screen -eq 1 ] && echo "Screen recording: enabled" \
 | |
|                  || echo "Screen recodding: disabled"
 | |
| [ microphone -eq 1 ] && echo "Microphone recording: enabled" \
 | |
|                      || echo "Microphone recodding: disabled"
 | |
| 
 | |
| done
 | |
| 
 | |
| clear
 | |
| 
 | |
| set -x
 | |
| 
 | |
| AUDIOMONDEVICE=snd/0.mon
 | |
| AUDIOPLAYDEVICE=snd/0.default
 | |
| AUDIORECDEVICE=snd/0.rec
 | |
| 
 | |
| AUDIOMONPID=X
 | |
| AUDIORECPID=X
 | |
| 
 | |
| trap rec_stop 0 1 2 3 6
 | |
| rec_stop() {
 | |
|   kill $AUDIORECPID $AUDIOMONPID
 | |
| }
 | |
| 
 | |
| rec_mon() {
 | |
|       aucat -f $AUDIOMONDEVICE -o $HOME/work/rec-mon.wav &
 | |
|       AUDIOMONPID=$!
 | |
| }
 | |
| 
 | |
| rec_mic() {
 | |
|       aucat -o $HOME/work/rec-mic.wav &
 | |
|       AUDIORECPID=$!
 | |
| }
 | |
| 
 | |
| rec_screen() {
 | |
|     echo 'Press q to stop.'
 | |
|     ffmpeg  -y -loglevel warning -hide_banner \
 | |
|             -fflags genpts \
 | |
|             -flags low_delay \
 | |
|             -thread_queue_size 256 \
 | |
|             -framerate 30 \
 | |
|             -f x11grab \
 | |
|             -probesize 16M \
 | |
|             -i :0.0 \
 | |
|             -c:v libx264rgb \
 | |
|             -crf 0 \
 | |
|             -qp 0 -framerate 30 \
 | |
|             -sws_flags neighbor \
 | |
|             -preset ultrafast \
 | |
|             -tune zerolatency \
 | |
|             $HOME/work/rec-screen.mkv
 | |
| }
 | |
| 
 | |
| rec_mon
 | |
| rec_mic
 | |
| rec_screen
 | |
| rec_stop
 | |
| 
 | |
| shotcut --noupgrade --fullscreen --clear-recent $HOME/work/rec-screen.mkv $HOME/work/rec-*.wav
 | 
