Ubuntu 18.04 网络摄像头流媒体问题

Raj*_*yaz 6 webcam vlc streaming rtsp 18.04

我需要在 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
Run Code Online (Sandbox Code Playgroud)

这是驱动程序信息。

/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
Run Code Online (Sandbox Code Playgroud)

当我打开MediaStream,正确执行所有步骤时,出现此错误:

Your input can't be opened:
VLC is unable to open the MRL 'v4l2:///dev/video0'. Check the log for detail.
Run Code Online (Sandbox Code Playgroud)

日志文件包含:

-- 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
Run Code Online (Sandbox Code Playgroud)

当我打开时Cheese,相机工作正常,我可以看到视频。

出于测试目的,我将/dev/video0权限设置为777,但仍然出现相同的错误。

这篇文章建议将用户添加到video组中,我这样做了,sudo usermod -aG video ${USER}但并不高兴。

我也试过运动这个职位,但我无法得到它的工作。

我也尝试FFmpeg的这一职位,但我无法得到那个工作为好。

我研究并尝试了这篇文章这篇文章这篇文章和许多其他文章,但似乎没有任何帮助。

在驱动程序信息部分(上面),我看到not using libv4l2,这可能是问题的原因吗?如果是这样,如何解决这个问题?

我究竟做错了什么?我的目标是通过RTSP连接到 Ubuntu 机器的 USB 网络摄像头向客户端机器提供流,以便在 Java 或 Python 中进行处理。我不受 VLC 的约束,所以我可以使用任何可以完成工作的东西。

任何人都可以为 VLC 问题提出可行的解决方案或建议可以完成这项工作的任何其他工具吗?

我尝试了很多帖子/解决方案,但都没有帮助。

小智 11

跟进@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                 -
...
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请运行: 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                 -
...
Run Code Online (Sandbox Code Playgroud)

请参阅:https : //snapcraft.io/docs/interface-management


小智 1

简短回答:

sudo apt install vlc
Run Code Online (Sandbox Code Playgroud)

进而 :

/usr/bin/vlc v4l2:///dev/video0
Run Code Online (Sandbox Code Playgroud)

应该管用。您不会获得完全相同的界面,但这对于大多数用途来说应该没问题。

说明:在 ubuntu 18.04 下,默认的 VLC 安装是“snap”安装(默认运行 /snap/bin/vlc)。许多链接表明,使用 snap 安装 VLC 时存在权限问题(例如,请参阅https://forum.videolan.org/viewtopic.php?t=149231)。

由于 gksu 不再工作并且 vlc 不接受 pkexec,因此很难调查,但我怀疑问题来自未加载的模块。然而,“肮脏的”“解决方案”:

\# modprobe -a $(find /lib/modules/4.18.0-15-generic/ -name *v4l2*.ko | while read i ; do basename -- $i; done | cut -d'.' -f1)
Run Code Online (Sandbox Code Playgroud)

没用。

希望这可以帮助 ...