>> Technologie Électronique >  >> Appareils photo >> Caméras vidéo

Capture vidéo sur Linux : ffmpeg, GStreamer, OBS & outils GUI

Linux offre une capture vidéo puissante, flexible — que vous capturiez une webcam, enregistriez votre bureau, ou ingériez depuis une carte de capture. Les outils CLI (ffmpeg, GStreamer) offrent un contrôle maximal ; les GUI (OBS, SimpleScreenRecorder) offrent l'immédiateté.

Prérequis

  • Identifier les périphériques : v4l2-ctl --list-devices ou ls /dev/video*.
  • Installer codecs : sudo apt install ffmpeg gstreamer1.0-tools gstreamer1.0-plugins-{good,bad,ugly,base} v4l-utils (Debian/Ubuntu).
  • Permissions : Ajoutez l'utilisateur au groupe video (sudo usermod -aG video $USER, reconnexion) ou lancez avec sudo (pas idéal).

Méthode 1 : ffmpeg (Couteau suisse)

Idéal pour scripting, serveurs headless, contrôle précis, conteneurs/codecs exotiques.

Capture 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 : Entrée Video4Linux2.
  • -video_size : Doit correspondre à un mode supporté par la caméra (vérifiez v4l2-ctl --list-formats-ext).
  • -preset veryfast -crf 18 : H.264 visuellement lossless, encodage rapide. Utilisez libx265 / -tag:v hvc1 pour HEVC.
  • -pix_fmt yuv420p : Assure compatibilité tous lecteurs (décodeurs matériels).

Capture écran (X11)

ffmpeg -f x11grab -r 30 -s 1920x1080 -i :0.0 \ -c:v libx264 -preset ultrafast -crf 0 output.mkv 
  • -f x11grab : Capture framebuffer X11. Pour Wayland, utilisez wf-recorder ou OBS.
  • -r 30 : Cadence. Utilisez -framerate pour entrée, -r pour sortie.
  • -crf 0 : Lossless RGB (fichiers énormes). Utilisez -crf 18 pour lossless perceptuel.

Capture écran (Wayland / PipeWire) — Standard moderne

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

Obtenez NODE_ID via pw-dump ou utilisez wf-recorder -g "$(slurp)" -f out.mp4 (sélection interactive région).

Méthode 2 : GStreamer (Puissance pipeline)

Idéal pour embarqué, streaming, ou pipelines multi-source complexes.

Webcam vers 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 : Négocie format entre source et encodeur.
  • x264enc tune=zerolatency : Critique pour streaming/faible latence.
  • Utilisez nvh264enc / vaapih264enc pour encodage matériel (NVIDIA/Intel/AMD).

Méthode 3 : Applications GUI (Recommandé pour la plupart)

AppIdéal pourWayland?Fonctionnalités clés
OBS StudioStreaming, Scènes, Multi-source, Replay BufferOui (PipeWire)NVENC/VA-API, Filtres, Mixage audio, Virtual Cam
SimpleScreenRecorderEnregistrement bureau rapide, injection OpenGLPartiel (XWayland)UI simple, Aperçu live, Multi-écran
KoohaGNOME-natif, UI minimalOuiRégion/Fenêtre/Écran, Overlay webcam, Encodage matériel
wf-recorderCLI/TUI, Wayland-natif, scriptingOui (Natif)DMA-BUF, dmabuf feedback, screencopy, haute perf
GNOME Screen RecorderIntégré (Ctrl+Alt+Shift+R)OuiZéro config, WebM/VP9 seulement, pas sélection entrée audio

Accélération matérielle (VA-API / NVENC / VAAPI)

Déléguez l'encodage au GPU (économie CPU massive) :

  • 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). Nécessite pilote proprio + nvidia-encoder.

Capture audio

Ajoutez -f pulse -i default (PulseAudio) ou -f pipewire -i (PipeWire) à ffmpeg. Dans GStreamer : pulsesrc ou pipewiresrc. OBS gère cela dans le mélangeur audio.

Fiche de référence rapide

# 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 # Écran (Wayland, PipeWire, sélection région via slurp) wf-recorder -g "$(slurp)" -c h264_vaapi -d /dev/dri/renderD128 -f recording.mp4 

Commencez avec OBS pour le travail interactif. Passez à ffmpeg/GStreamer pour automatisation, serveurs, ou pipelines custom. Testez toujours la sync audio (-itsoffset / async) sur votre matériel spécifique.

Caméras vidéo