Могу ли я использовать видеокамеру как V4L2src в gstreamer? Просто я могу использовать видеокамеру в качестве веб-камеры в Linux? Если да, то какие модели спортированы? Заранее спасибо.
1 ответ
есть несколько различных 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
), являются проприетарными, промышленными протоколами (и не предлагают аппаратное обеспечение "видеокамеры")