Мне нужно запустить некоторые алгоритмы обработки видео в потоке IP-камеры. У меня нет IP-камеры, поэтому моя идея состоит в том, чтобы использовать веб-камеру в качестве IP-камеры для потоковой передачи RTSP
, которую клиентские машины могут получать и запускать алгоритмы. Я узнал, что VLC может выполнять потоковую передачу с веб-камеры. Я подключил старую веб-камеру к машине с Ubuntu. Вот информация.
$ v4l2-ctl --list-devices
SAMSUNG (SPC-A30M): SAMSUNG (SP (usb-0000:00:14.0-7):
/dev/video0
/dev/video1
$ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Вот информация о драйвере.
/dev/video0
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : SAMSUNG (SPC-A30M): SAMSUNG (SP
Bus info : usb-0000:00:14.0-7
Driver version: 5.3.18
Capabilities : 0x84A00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
==========================================================
/dev/video1
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : SAMSUNG (SPC-A30M): SAMSUNG (SP
Bus info : usb-0000:00:14.0-7
Driver version: 5.3.18
Capabilities : 0x84A00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04A00000
Metadata Capture
Streaming
Extended Pix Format
ioctl: VIDIOC_ENUM_FMT
Когда я открываю Media Stream , выполняю все шаги правильно, я получаю следующую ошибку:
Your input can't be opened:
VLC is unable to open the MRL 'v4l2:///dev/video0'. Check the log for detail.
Файл журнала содержит:
-- logger module started --
main: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
main: playlist is empty
v4l2 error: cannot open device '/dev/video0': Operation not permitted
v4l2 error: cannot open device '/dev/video0': Operation not permitted
v4l2 error: cannot open device '/dev/video0': Operation not permitted
v4l2 error: cannot open device '/dev/video0': Operation not permitted
Когда я открываю Cheese , камера работает нормально, видео можно посмотреть.
В целях тестирования я установил разрешения / dev / video0
на 777
, но все равно получаю ту же ошибку.
В этом сообщении предлагается добавить пользователя в группу video
, я сделал это с помощью sudo usermod -aG video $ {USER}
, но без радости.
Я также пробовал Motion в этом посте , но мне не удалось заставить его работать.
Я также пробовал FFmpeg в этом посте , но мне не удалось заставить его работать.
Я изучал и пробовал этот пост , этот пост , этот пост и многие другие, но, похоже, ничего не помогает.
В разделе «Информация о драйвере» (выше) я вижу, что не использует libv4l2
, может ли это быть причиной проблемы? Если да, то как решить эту проблему?
Что я делаю не так? Моя цель - предоставить поток RTSP
с веб-камеры USB, подключенной к машине Ubuntu, на клиентские машины для обработки на Java или Python. Я не привязан к VLC, поэтому могу использовать все, что выполняет свою работу.
Может ли кто-нибудь предложить рабочее решение проблемы VLC или предложить какой-либо другой инструмент, который может выполнить эту работу?
Я перепробовал много сообщений / решений, но ни один из них не помог.
В ответ на ответ @JEL возникла проблема с разрешениями, из-за которой snap не позволяет vlc получить доступ к устройствам /dev/video.
$ snap connections vlc
Interface Plug Slot Notes
audio-playback vlc:audio-playback :audio-playback -
audio-record vlc:audio-record - -
camera vlc:camera - -
desktop vlc:desktop :desktop -
...
Чтобы это исправить, запустите: snap connect vlc:camera :camera
Это создаст соединение между интерфейсом и слотом:
$ snap connections vlc
Interface Plug Slot Notes
audio-playback vlc:audio-playback :audio-playback -
audio-record vlc:audio-record - -
camera vlc:camera :camera manual
desktop vlc:desktop :desktop -
...