84 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| 
 | |
| audio() {
 | |
|     # set mixer controls
 | |
|     print configuring microphone
 | |
|     mixerctl -q record.adc-0:1_source=mic2
 | |
|     mixerctl -q record.adc-2:3_source=mic2
 | |
|     mixerctl -q inputs.mix_source=mic2
 | |
| }
 | |
| 
 | |
| 
 | |
| webcam() {
 | |
|     printf 'start webcam\n'
 | |
|     doas mpv --quiet \
 | |
|         --panscan=1 \
 | |
|         --framedrop=vo \
 | |
|         --ontop av://v4l2:/dev/video0 \
 | |
|         --profile=low-latency \
 | |
|         --untimed \
 | |
|         --vf=hflip \
 | |
|         --geometry=220x180 2>&1 > /dev/null &
 | |
|     print move the picture to the right place and press any key
 | |
|     read
 | |
| }
 | |
| 
 | |
| 
 | |
| capture() {
 | |
|     printf 'starting recording... press q to stop\n'
 | |
|     RES=$(xwininfo -root | grep 'geometry' | awk '{print $2;}' |cut -d"+" -f1)
 | |
|     ffmpeg -y -loglevel warning \
 | |
|         -thread_queue_size 256 \
 | |
|         -probesize 10000000 \
 | |
|         -hide_banner \
 | |
|         -f sndio \
 | |
|         -i default \
 | |
|         -c:a flac \
 | |
|         -f x11grab \
 | |
|         -s $RES \
 | |
|         -i :0.0 \
 | |
|         -r 25 \
 | |
|         -c:v libx265 \
 | |
|         -crf 0 \
 | |
|         -qp 0 \
 | |
|         -preset ultrafast \
 | |
|         -g 50 \
 | |
|         -keyint_min 25 \
 | |
|         $HOME/work/rec_screen.mkv
 | |
| }
 | |
| 
 | |
| encode() {
 | |
|     printf 'encoding video\n'
 | |
|     ffmpeg -y \
 | |
|         -i $HOME/work/rec_screen.mkv \
 | |
|         -c:v libx265 \
 | |
|         -crf 21 \
 | |
|         -s 1920x1080 \
 | |
|         -preset medium \
 | |
|         $HOME/work/rec_screen.mp4
 | |
| }
 | |
| 
 | |
| printf '
 | |
| (1) desktop only (works on linux)
 | |
| (2) desktop + audio
 | |
| (3) desktop + webcam + audio
 | |
| '
 | |
| printf ": "
 | |
| read sel
 | |
| 
 | |
| case $sel in
 | |
|     1)  capture; 
 | |
|         encode;
 | |
|         ;;
 | |
|     2)  audio;
 | |
|         capture;
 | |
|         encode;
 | |
|         ;;
 | |
|     3)  audio;
 | |
|         webcam;
 | |
|         capture;
 | |
|         encode;
 | |
|         ;;
 | |
| esac
 | 
