есть несколько различных API для сбора видео, что примечательно
- v4l2 (это общий видео API на Linux; он охватывает почти все, кроме следующих двух)
- iidc (это промышленный протокол "video over ieee1394", обычно не встречающийся в оборудовании потребительского уровня)
- DV (это «A / V-сигнал поверх ieee1394», который вы обычно найдете в потребительских «камкордерах firewire»; скорее всего, это то, что вы подразумеваете под «видеокамерой»)
в зависимости от вашего вида вашей «видеокамеры», вы можете использовать один (или несколько, или ни одного) из них.
аналоговый выход
с незапамятных времен любая приличная видеокамера поставляется с анлогом (например, «композитный»). чтобы использовать его на любом компьютере, сначала нужно оцифровать сигнал, что обычно делается через фрейм-граббер на компьютере. PCI-карты bbtv (bt878) и карты на базе коннексанта очень хорошо поддерживаются в Linux (другие, вероятно, хорошо, но я никогда не использовал их), и, по моему опыту, это все еще путь, если вам нужна низкая задержка Но, к сожалению, эти карты становятся редкими. эти карты обычно покрываются API v4l2, поэтому v4l2src
будут работать нормально.
v4l2src ! ...
внешние грабберы аналоговые2usb и аналоговые2dv на рынке, см. ниже.
цифровой выход (USB)
вот где все веб-камеры вступают в игру, возможно, некоторые внешние аналоговые2usb устройства, возможно, некоторые «видеокамеры». Поддерживается ли ваше устройство, зависит от используемых чипсетов. если она будет поддерживаться, то они, как правило, используют v4l2-API, так что опять что - то, как это будет работать:
v4l2src ! ...
цифровой выход (DV / HDV)
эти устройства не охвачены версией v4l2, но вместо этого есть отдельный API. DV-поток содержит как аудио, так и видео, поэтому для получения изображения вам нужно сначала захватить DV-поток, а затем разделить два (аудио и видео) потока на части (также называемые «demultiplex / demux them») и затем декодировать результирующий видео-поток. что-то вроде этого должно сделать:
dv1394src ! dvdemux ! dvdec ! ...
если вы получаете HDV-поток (который действительно является потоком MPEG-TS по сравнению с ieee1394), существует отдельный hdv1394src
объект:
hdv1394src ! decodebin ! ...
цифровой выход (IIDC)
промышленные FireWire-камеры (в основном используются для распознавания изображений и т. п .; на рынке не существует «видеокамер», использующих этот протокол, поэтому я добавляю его только для полноты картины), использующих протокол «IIDC».
чтобы использовать его с gstreamer, просто выполните:
dc1394src ! ...
другие
большинство других протоколов, которые вы там обнаружите (например GigE
), являются проприетарными, проколами промышленного уровня (и не предлагают аппаратное обеспечение "видеокамеры")