>> Tecnologia Eletrônica >  >> Câmeras >> Câmeras de Vídeo

Captura de Vídeo no Linux: ffmpeg, GStreamer, OBS e Ferramentas GUI

Linux oferece captura de vídeo poderosa e flexível — seja pegando webcam, gravando desktop, ou ingerindo de placa de captura. Ferramentas CLI (ffmpeg, GStreamer) oferecem controle máximo; GUIs (OBS, SimpleScreenRecorder) oferecem imediatismo.

Pré-requisitos

  • Identifique dispositivos: v4l2-ctl --list-devices ou ls /dev/video*.
  • Instale codecs: sudo apt install ffmpeg gstreamer1.0-tools gstreamer1.0-plugins-{good,bad,ugly,base} v4l-utils (Debian/Ubuntu).
  • Permissões: Adicione usuário ao grupo video (sudo usermod -aG video $USER, re-login) ou rode com sudo (não ideal).

Método 1: ffmpeg (Canivete Suíço)

Melhor para scripting, servidores headless, controle preciso, e containers/codecs 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: Input Video4Linux2.
  • -video_size: Deve matchar modo que câmera suporta (cheque v4l2-ctl --list-formats-ext).
  • -preset veryfast -crf 18: H.264 visualmente lossless, encode rápido. Use libx265 / -tag:v hvc1 para HEVC.
  • -pix_fmt yuv420p: Garante compatibilidade com todos players (decoders de hardware).

Captura de Tela (X11)

ffmpeg -f x11grab -r 30 -s 1920x1080 -i :0.0 \
 -c:v libx264 -preset ultrafast -crf 0 output.mkv 
  • -f x11grab: Grab do framebuffer X11. Para Wayland, use wf-recorder ou OBS.
  • -r 30: Taxa de quadros. Use -framerate para input, -r para output.
  • -crf 0: Lossless RGB (arquivos enormes). Use -crf 18 para perceptual lossless.

Captura de Tela (Wayland / PipeWire) — Padrão Moderno

ffmpeg -f pipewire -framerate 30 -video_size 1920x1080 -i  \
 -c:v libx264 -preset veryfast -crf 18 output.mp4 

Obtenha NODE_ID via pw-dump ou use wf-recorder -g "$(slurp)" -f out.mp4 (seleção interativa de região).

Método 2: GStreamer (Poder de Pipeline)

Ideal para embedded, streaming, ou pipelines complexos multi-fonte.

Webcam para 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 formato entre source e encoder.
  • x264enc tune=zerolatency: Crítico para streaming/baixa latência.
  • Use nvh264enc / vaapih264enc para encode de hardware (NVIDIA/Intel/AMD).

Método 3: Aplicações GUI (Recomendado para Maioria)

AppMelhor ParaWayland?Recursos-Chave
OBS StudioStreaming, Cenas, Multi-source, Replay BufferSim (PipeWire)NVENC/VA-API, Filtros, Mixagem de áudio, Virtual Cam
SimpleScreenRecorderGravação desktop rápida, injeção OpenGLParcial (XWayland)UI simples, Preview ao vivo, Multi-monitor
KoohaGNOME-nativo, UI minimalistaSimRegião/Janela/Tela, Overlay webcam, Encode hardware
wf-recorderCLI/TUI, Wayland-nativo, scriptingSim (Nativo)DMA-BUF, dmabuf feedback, screencopy, alta perf
GNOME Screen RecorderEmbutido (Ctrl+Alt+Shift+R)SimZero config, WebM/VP9 apenas, sem seleção input áudio

Aceleração de Hardware (VA-API / NVENC / VAAPI)

Descarregue encode para GPU (economia massiva de CPU):

  • Intel/AMD (VA-API): -c:v h264_vaapi -vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' (ffmpeg) ou vaapih264enc (GStreamer).
  • NVIDIA (NVENC): -c:v h264_nvenc -preset p4 -cq 19 (ffmpeg) ou nvh264enc (GStreamer). Requer driver proprietário + nvidia-encoder.

Captura de Áudio

Adicione -f pulse -i default (PulseAudio) ou -f pipewire -i (PipeWire) ao ffmpeg. No GStreamer: pulsesrc ou pipewiresrc. OBS lida isso no Audio Mixer.

Cartão de Referência Rápida

# Webcam (H.264, hwaccel 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 # Screen (Wayland, PipeWire, seleção região via slurp) wf-recorder -g "$(slurp)" -c h264_vaapi -d /dev/dri/renderD128 -f recording.mp4 

Comece com OBS para trabalho interativo. Gradué para ffmpeg/GStreamer para automação, servidores, ou pipelines custom. Sempre teste sync de áudio (-itsoffset / async) no seu hardware específico.