Video4Linux
Written inC
Operating systemLinux
PlatformLinux kernel
LicenseGNU General Public License
Websitewww.linuxtv.org
Repositorygit.linuxtv.org/v4l-utils.git

Video4Linux (V4L for short) is a collection of device drivers and an API for supporting realtime video capture on Linux systems.[1] It supports USB webcams, TV tuners, CSI cameras, and related devices, standardizing their output, so programmers can easily add video support to their applications.

Video4Linux is responsible for creating V4L2 device nodes aka a device file (/dev/videoX, /dev/vbiX and /dev/radioX) and tracking data from these nodes. The device node creation is handled by V4L device drivers using the video_device struct (v4l2-dev.h) and it can either be allocated dynamically or embedded in another larger struct.

Video4Linux was named after Video for Windows (which is sometimes abbreviated "V4W"), but is not technically related to it.[2][3]

While Video4Linux is only available on Linux, there is a compatibility layer available for FreeBSD called Video4BSD. This provides a way for many programs that depend on V4L to also compile and run on the FreeBSD operating system.

History

edit

V4L had been introduced late into the 2.1.X development cycle of the Linux kernel. Retroactively being renamed to V4L1, it was dropped in kernel 2.6.38.[4]

V4L2 is the second version of V4L. Video4Linux2 fixed some design bugs and started appearing in the 2.5.x kernels. Video4Linux2 drivers include a compatibility mode for Video4Linux1 applications, though the support can be incomplete and it is recommended to use Video4Linux1 devices in V4L2 mode. The project DVB-Wiki is now hosted on LinuxTV web site.[5]

Some programs support V4L2 through the media resource locator v4l2://.

Software support

edit

Criticism

edit

Video4Linux has a complex negotiation process, which caused not all applications having support for all cameras.[8]

See also

edit
  • Direct Rendering Manager – defines a kernel-to-user-space interface for access to graphics rendering and video acceleration
  • Mesa 3D – implements video acceleration APIs

References

edit
  1. ^ "An Introduction to the Video4Linux Framework: How to write a video capture driver". 2014-02-02. Retrieved 2014-02-16.
  2. ^ "Overview of the V4L2 driver framework". Archived from the original on 2014-02-21. Retrieved 2013-12-04. Overview of the V4L2 driver framework.
  3. ^ "Path to a Standardized Video Codec API" (PDF). Archived from the original on 2014-01-06.
  4. ^ "gspca - LinuxTVWiki". LinuxTV. Retrieved 2024-01-12.
  5. ^ Schimek, Michael H. "Video for Linux Two API Specification". LinuxTV. Retrieved 2024-01-12.
  6. ^ "Open Broadcaster Software | OBS". obsproject.com.
  7. ^ "Add video capture API proposal by 1bsyl". GitHub.
  8. ^ Corbet, Jonathan (2019-07-25). "Access to complex video devices with libcamera". LWN.net. Retrieved 2023-02-06.
edit

📚 Artikel Terkait di Wikipedia

ZBar

converting it to use qt5 and libv4l, improving it to better support the Video4Linux API version 2. Image scanning Real-time scanning of video streams C++

Cheese (software)

for the GNOME desktop, i.e. an application to handle UVC streams over Video4Linux. It was developed as a Google Summer of Code 2007 project by Daniel G

Linux kernel

hardware direct memory access across multiple device drivers and subsystems Video4Linux – for video capture hardware Advanced Linux Sound Architecture (ALSA) –

VLC media player

Vorbis, WavPack, WMA (WMA 1/2, WMA 3 partially), XM. Capture devices: Video4Linux (on Linux), DirectShow (on Windows), Desktop (screencast), Digital TV

Linux kernel version history

with the 2.2.27-rc2 USB devices support Frame-buffer console ipchains Video4Linux NTFS (readonly), FAT32 and HFS support Initial IPv6 support SPX support

Rust for Linux

In-kernel ALSA Crypto API io_uring DRM kernfs Memory barrier New API RCU Video4Linux IIO Userspace Daemons, File systems bpffs configfs devfs devpts debugfs

Libusb

scanner module, which is restricted to Linux kernel 2.4. Linux API udev Video4Linux "Initial commit · libusb/Libusb@852bba4". GitHub. "Release 1.0.30". 17

Media resource locator

address⟩[:⟨server port⟩]/⟨stream name⟩ Several media players also support Video4Linux as v4l:// and v4l2://. "Media resource locator", Wiki, VideoLAN. v t