En FreeBSD disponemos de distintas herramientas de captura de audio/video con sus pros y sus contras, según nuestras necesidades optaremos por una u otra:
- Simple Screen Recorder: Fácil de utilizar, sin audio
- Virtual OSS: Permite que otras aplicaciones graben el audio desde OSS
- OBS: La opción mas completa en cuanto a funcionalidades
- FFMPEG: Instalado por defecto en un gran número de equipos
Simple Screen Recorder
La herramienta mas sencilla de utilizar para grabar la pantalla es simplescreenrecorder, esta nos permite grabar la pantalla entera, un área de esta o una ventana de una aplicación en particular.
El problema de simplescreenrecorder es que solo permite grabar de dispositivos pulseaudio y jack, yo no he conseguido que funcione por ninguno de los dos sistemas, por lo tanto la utilizo cuando quiero grabar solo el video.
Virtual OSS
Parece ser que OSS por defecto no permite que la salida de audio sea la entrada de otra aplicación, para poder hacer eso tendremos que crear un dispositivo nuevo mediante virtual_oss.
Cargamos el módulo cuse:
sysrc cuse_load=YES
Permitimos que nuestro usuario regular pueda ejecutar virtual_oss como root:
kr0m ALL=(ALL) NOPASSWD: /usr/local/sbin/virtual_oss
Duplicamos el dispositivo /dev/dsp4(salida de audio por defecto en mi sistema) en /dev/dsp.virtual_oss.
Ahora las aplicaciones que graben desde /dev/dsp.virtual_oss estarán grabando la salida de audio que escuchamos nosotros.
OBS
OBS: Open Broadcaster Software es uno de los softwares mas completos en cuanto a streaming y grabación de video, este nos permite añadir tanto fuentes de video como de audio, para poder grabar el audio previamente debemos crear el dispositivo mediante virtual_oss y añadirlo como se muestra a continuación.
FFMPEG
La ventaja de ffmpeg es que suele estar instalado en casi todos los equipos de escritorio pudiendo realizar grabaciones sin necesidad de añadir software adicional, para poder grabar el audio previamente debemos crear el dispositivo mediante virtual_oss.
Para iniciar una grabación es tan sencillo como ejecutar el siguiente comando:
xdpyinfo | grep -i dimensions: | sed 's/[^0-9]*pixels.*(.*).*//' | sed 's/[^0-9x]*//'
-r 25 -i :0.0 -f oss -thread_queue_size 1024 -i /dev/dsp.virtual_oss recording.mp4