Как использовать Handycam в качестве веб-камеры в Linux
Могу ли я использовать видеокамеру в качестве 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-поток, а затем разделить два (аудио и видео) потока на части (также называемые "демультиплексировать / демультиплексировать их") и затем декодировать результирующий видео-поток. что-то вроде этого должно сделать:
dv1394src ! dvdemux ! dvdec ! ...
если вы получаете HDV-поток (который на самом деле является потоком MPEG-TS по сравнению с ieee1394), существует отдельная hdv1394src
объект:
hdv1394src ! decodebin ! ...
цифровой выход (IIDC)
промышленные FireWire-камеры (в основном используются для распознавания изображений и т. п.; на рынке не существует "видеокамер", использующих этот протокол, поэтому я добавляю его только для полноты картины), использующих протокол "IIDC".
чтобы использовать его с gstreamer, просто выполните:
dc1394src ! ...
другие
большинство других протоколов вы найдете там (например, GigE
) являются проприетарными, промышленными проколами (и не предлагают аппаратное обеспечение "видеокамеры")