Ubuntu 18.04 Проблема потоковой передачи веб-камеры

Мне нужно запустить некоторые алгоритмы обработки видео в потоке 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 или предложить какой-либо другой инструмент, который может выполнить эту работу?

Я перепробовал много сообщений / решений, но ни один из них не помог.

0
задан 4 April 2020 в 20:27

1 ответ

В ответ на ответ @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                 -
...

см.: https://snapcraft.io/docs /interface-management

12
ответ дан 25 May 2020 в 15:48

Другие вопросы по тегам:

Похожие вопросы: