Captura de video en Linux: ffmpeg, GStreamer, OBS y herramientas GUI
Linux ofrece captura de video potente y flexible, ya sea que estés grabando una webcam, grabando tu escritorio o ingestando desde una tarjeta de captura. Las herramientas de línea de comandos (ffmpeg, GStreamer) ofrecen control máximo; las GUIs (OBS, SimpleScreenRecorder) ofrecen inmediatez.
Requisitos previos
- Identifica dispositivos:
v4l2-ctl --list-devicesols /dev/video*. - Instala códecs:
sudo apt install ffmpeg gstreamer1.0-tools gstreamer1.0-plugins-{good,bad,ugly,base} v4l-utils(Debian/Ubuntu). - Permisos: Agrega al usuario al grupo
video(sudo usermod -aG video $USER, vuelve a iniciar sesión) o ejecuta consudo(no ideal).
Método 1: ffmpeg (Cuchillo suizo)
Ideal para scripts, servidores sin interfaz, control preciso y contenedores/códecs exóticos.
Captura de webcam (V4L2)
ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 \ -c:v libx264 -preset veryfast -crf 18 -pix_fmt yuv420p \ -c:a aac -b:a 128k output.mp4
-f v4l2: Entrada Video4Linux2.-video_size: Debe coincidir con un modo que la cámara admita (verificav4l2-ctl --list-formats-ext).-preset veryfast -crf 18: H.264 visualmente sin pérdida, codificación rápida. Usalibx265/-tag:v hvc1para HEVC.-pix_fmt yuv420p: Asegura compatibilidad con todos los reproductores (decodificadores de hardware).
Captura de pantalla (X11)
ffmpeg -f x11grab -r 30 -s 1920x1080 -i :0.0 \ -c:v libx264 -preset ultrafast -crf 0 output.mkv
-f x11grab: Captura de framebuffer X11. Para Wayland, usawf-recorderu OBS.-r 30: Tasa de cuadros. Usa-frameratepara entrada,-rpara salida.-crf 0: RGB sin pérdida (archivos enormes). Usa-crf 18para pérdida percibida nula.
Captura de pantalla (Wayland / PipeWire) — Estándar moderno
ffmpeg -f pipewire -framerate 30 -video_size 1920x1080 -i \ -c:v libx264 -preset veryfast -crf 18 output.mp4
Obtén NODE_ID mediante pw-dump o usa wf-recorder -g "$(slurp)" -f out.mp4 (selección interactiva de región).
Método 2: GStreamer (Potencia de canalización)
Ideal para sistemas integrados, transmisión o canalizaciones complejas de múltiples fuentes.
Webcam a H.264 MP4
gst-launch-1.0 v4l2src device=/dev/video0 ! \ video/x-raw,width=1280,height=720,framerate=30/1 ! \ videoconvert ! x264enc tune=zerolatency bitrate=6000 speed-preset=fast ! \ mp4mux ! filesink location=webcam.mp4
videoconvert: Negocia el formato entre la fuente y el codificador.x264enc tune=zerolatency: Crítico para transmisión/baja latencia.- Usa
nvh264enc/vaapih264encpara codificación de hardware (NVIDIA/Intel/AMD).
Método 3: Aplicaciones GUI (Recomendado para la mayoría)
| App | Ideal para | ¿Wayland? | Características clave |
|---|---|---|---|
| OBS Studio | Transmisión, Escenas, Multi-fuente, Búfer de repetición | Sí (PipeWire) | NVENC/VA-API, Filtros, Mezcla de audio, Cámara virtual |
| SimpleScreenRecorder | Grabación rápida de escritorio, Inyección OpenGL | Parcial (XWayland) | UI simple, Vista previa en vivo, Multi-monitor |
| Kooha | Nativo de GNOME, UI minimalista | Sí | Región/Ventana/Pantalla, Superposición de webcam, Codificación de hardware |
| wf-recorder | CLI/TUI, Nativo de Wayland, Scripting | Sí (Nativo) | DMA-BUF, retroalimentación dmabuf, screencopy, alto rendimiento |
| Grabador de pantalla de GNOME | Integrado (Ctrl+Alt+Shift+R) | Sí | Sin configuración, solo WebM/VP9, sin selección de entrada de audio |
Aceleración de hardware (VA-API / NVENC / VAAPI)
Descarga la codificación a la GPU (ahorro masivo de CPU):
- Intel/AMD (VA-API):
-c:v h264_vaapi -vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload'(ffmpeg) ovaapih264enc(GStreamer). - NVIDIA (NVENC):
-c:v h264_nvenc -preset p4 -cq 19(ffmpeg) onvh264enc(GStreamer). Requiere controlador propietario +nvidia-encoder.
Captura de audio
Agrega -f pulse -i default (PulseAudio) o -f pipewire -i (PipeWire) a ffmpeg. En GStreamer: pulsesrc o pipewiresrc. OBS maneja esto en el Mezclador de audio.
Tarjeta de referencia rápida
# Webcam (H.264, aceleración VA-API) ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD128 -filter_hw_device foo \ -f v4l2 -i /dev/video0 -vf 'format=nv12|vaapi,hwupload' -c:v h264_vaapi -qp 22 out.mp4 # Pantalla (Wayland, PipeWire, selección de región vía slurp) wf-recorder -g "$(slurp)" -c h264_vaapi -d /dev/dri/renderD128 -f recording.mp4
Empieza con OBS para trabajo interactivo. Pasa a ffmpeg/GStreamer para automatización, servidores o canalizaciones personalizadas. Siempre prueba la sincronización de audio (-itsoffset / async) en tu hardware específico.
- ·Cómo Publicar un Comentario en el Foro de Image-Line
- ·Definición de cámaras CCD
- ·Cómo copiar contenido de la Sony Handycam DCR-DVD92E
- ·Cómo Subir un Video a YouTube: Guía Completa Paso a Paso
- ·¿Buscas Contenido de Susto? Considera Estas Alternativas Más Seguras
- ·Videovigilancia en escuelas: ventajas, desventajas y consideraciones
- ·Qué cámaras se usan para filmar películas profesionales
- ·Cómo convertir S-Video a VGA
