startscreencast 1.1 KB

1234567891011121314151617181920212223
  1. #!/bin/bash
  2. timestamp="$(date +%Y%m%d%H%M%S)"
  3. targetbase="$HOME/screencast"
  4. mkdir -p $targetbase
  5. # Obtener las coordenadas y el tamaño de la ventana seleccionada
  6. # Esto excluye la decoración de la ventana.
  7. unset x y w h
  8. eval $(xwininfo | sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p" \
  9. -e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p" \
  10. -e "s/^ \+Width: \+\([0-9]\+\).*/w=\1/p" \
  11. -e "s/^ \+Height: \+\([0-9]\+\).*/h=\1/p" )
  12. $w=$w + $w % 2 # que el ancho sea múltiplo de 2, sino ffmpeg se queja
  13. WIN_XY=$x","$y # dar formato a las coordenadas XY
  14. WIN_GEO=$w"x"$h # dar formato al tamaño de la ventana
  15. echo $WIN_XY
  16. echo $WIN_GEO
  17. # notify-send mostrará un mensaje indicando el inicio del screencast.
  18. # correr ffmpeg con los parámetros que se ajusten a tu configuración.
  19. [ -d $targetbase ] || exit 1
  20. notify-send "Iniciando screencast..." && ffmpeg -f alsa -ac 1 -i pulse -f x11grab -r 25 -s $WIN_GEO -i :0.0+$WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -preset ultrafast -crf 0 -threads 0 $targetbase/screencast_$timestamp.mkv