>> Tecnologia elettronica >  >> Telecamere >> Action cam

Acquisizione video su Linux: ffmpeg, GStreamer, OBS e strumenti GUI

Linux offre potenti e flessibili strumenti di acquisizione video—che tu stia catturando una webcam, registrando il desktop o acquisendo da una scheda di acquisizione. Gli strumenti CLI (ffmpeg, GStreamer) offrono controllo massimo; le GUI (OBS, SimpleScreenRecorder) offrono immediatezza.

Prerequisiti

Metodo 1: ffmpeg (Coltellino svizzero)

Migliore per scripting, server headless, controllo preciso e contenitori/codec esotici.

Cattura 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 

Cattura schermo (X11)

ffmpeg -f x11grab -r 30 -s 1920x1080 -i :0.0 \ -c:v libx264 -preset ultrafast -crf 0 output.mkv 
  • -f x11grab: Cattura framebuffer X11. Per Wayland, usa wf-recorder o OBS.
  • -r 30: Frame rate. Usa -framerate per input, -r per output.
  • -crf 0: RGB lossless (file enormi). Usa -crf 18 per percettivamente lossless.

Cattura schermo (Wayland / PipeWire) — Standard moderno

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

Ottieni NODE_ID tramite pw-dump o usa wf-recorder -g "$(slurp)" -f out.mp4 (selezione regione interattiva).

Metodo 2: GStreamer (Potenza pipeline)

Ideale per embedded, streaming, o pipeline complesse multi-sorgente.

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: Negozia formato tra sorgente ed encoder.
  • x264enc tune=zerolatency: Critico per streaming/bassa latenza.
  • Usa nvh264enc / vaapih264enc per encodifica hardware (NVIDIA/Intel/AMD).

Metodo 3: Applicazioni GUI (Consigliate per la maggior parte)

AppMeglio perWayland?Funzionalità chiave
OBS StudioStreaming, Scene, Multi-sorgente, Replay BufferSì (PipeWire)NVENC/VA-API, Filtri, Mixaggio audio, Virtual Cam
SimpleScreenRecorderRegistrazione desktop rapida, iniezione OpenGLParziale (XWayland)Interfaccia semplice, Anteprima live, Multi-monitor
KoohaNativo GNOME, interfaccia minimaleSìRegione/Finestra/Schermo, Overlay webcam, Encodifica hardware
wf-recorderCLI/TUI, Wayland nativo, scriptingSì (Nativo)DMA-BUF, dmabuf feedback, screencopy, alte prestazioni
GNOME Screen RecorderIntegrato (Ctrl+Alt+Shift+R)SìZero config, solo WebM/VP9, nessuna selezione input audio

Accelerazione hardware (VA-API / NVENC / VAAPI)

Spostare l'encodifica sulla GPU (massiccio risparmio CPU):

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

Cattura audio

Aggiungi -f pulse -i default (PulseAudio) o -f pipewire -i (PipeWire) a ffmpeg. In GStreamer: pulsesrc o pipewiresrc. OBS gestisce questo in Audio Mixer.

Scheda di riferimento rapida

# 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 # Schermo (Wayland, PipeWire, selezione regione via slurp) wf-recorder -g "$(slurp)" -c h264_vaapi -d /dev/dri/renderD128 -f recording.mp4 

Inizia con OBS per lavoro interattivo. Passa a ffmpeg/GStreamer per automazione, server o pipeline personalizzate. Testa sempre sincronia audio (-itsoffset / async) sul tuo hardware specifico.