Overview
From opencv2/videoio.hpp:48-64:Read and write video or image sequences with OpenCV. This module provides unified interfaces for video capture and writing across different platforms and backends including FFmpeg, GStreamer, DirectShow, AVFoundation, and more.
VideoCapture
Capture from cameras or read video files
VideoWriter
Write video files with codec selection
Backends
Multiple API backend support (FFmpeg, GStreamer, etc.)
Hardware Accel
GPU-accelerated encoding and decoding
VideoCapture Class
Capturing from Camera
Example from samples/cpp/videocapture_basic.cpp:Reading Video Files
Video Capture Backends
From videoio.hpp:92-129, OpenCV supports multiple backends:Video Capture Properties
From videoio.hpp:138-216, extensive property control:Seeking in Videos
VideoWriter Class
Writing Video Files
FourCC Codes
Hardware Acceleration
From videoio.hpp:256-269:Image Sequences
Audio Support
From videoio.hpp:198-206:Practical Examples
Video File Converter
Extract Video Frames
Real-time Camera Processing
Video Stabilization
Best Practices
Always Check isOpened():This catches missing files, unsupported formats, or codec issues.
Choose the Right Backend:
- FFmpeg - Best for file I/O, most format support
- GStreamer - Good for streaming, pipelines
- Platform-specific - MSMF (Windows), AVFoundation (macOS) for cameras
Frame Rate Control:
Codec Compatibility:
H.264 is the most widely supported codec:For maximum compatibility, use .mp4 container with H.264 codec.
Troubleshooting
Common Issues
-
“Cannot open video”
- Check file exists and path is correct
- Verify codec support:
cap.get(CAP_PROP_FOURCC) - Try different backend:
VideoCapture(file, CAP_FFMPEG)
-
Frames not written
- Ensure frame size matches VideoWriter size
- Check frame type (CV_8UC3 for color)
- Verify disk space and write permissions
-
Camera not found
- Try different camera indices (0, 1, 2…)
- Specify backend:
VideoCapture(0, CAP_DSHOW) - Check camera permissions
-
Playback too fast/slow
- Get FPS:
cap.get(CAP_PROP_FPS) - Use proper delay:
waitKey(1000/fps)
- Get FPS:
Related Modules
- Image Codecs - Image I/O operations
- High-Level GUI - Display video frames
- Video Analysis - Process video content
Source Reference
Main header:~/workspace/source/modules/videoio/include/opencv2/videoio.hpp
Examples:
samples/cpp/videocapture_basic.cppsamples/cpp/videowriter_basic.cppsamples/cpp/videocapture_camera.cpp
