web-dev-qa-db-ja.com

Ubuntu 18.04 Webcamストリーミングの問題

IPカメラストリームでいくつかのビデオ処理アルゴリズムを実行する必要があります。私はIPカメラを持っていないので、クライアントマシンがアルゴリズムを取得して実行できるRTSPストリーミング用のIPカメラとしてWebカメラを使用するのが私の考えです。 VLCがWebカメラからストリーミングを実行できることを学びました。古いウェブカメラを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

開いたとき MediaStream、すべての手順を正しく実行すると、次のエラーが発生します。

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}を使用して実行しましたが、喜びはありませんでした。

Motionthis post でも試しましたが、動作しませんでした。

私も FFmpegこの投稿 で試しましたが、それも機能しませんでした。

私は この投稿この投稿この投稿 、その他多くのことを調べて試しましたが、何も役に立たないようです。

上記の[ドライバー情報]セクションにnot using libv4l2が表示されます。それが問題の原因ですか?もしそうなら、この問題をどのように解決しますか?

何が悪いのですか?私の目的は、Ubuntuマシンに接続されたUSB WebcamからRTSPストリームを、JavaまたはPythonで処理するためにクライアントマシンに提供することです。私はVLCに拘束されません。だから私は仕事を成し遂げるものなら何でも使うことができます。

誰かがVLC問題の実用的な解決策を提案したり、その仕事を行うことができる他のツールを提案したりできますか?

多くの投稿/解決策を試しましたが、どれも役に立ちませんでした。

1
Raja Ayaz

短い答え :

Sudo apt install vlc

その後 :

/usr/bin/vlc v4l2:///dev/video0

うまくいくはずです。まったく同じインターフェースを取得することはできませんが、ほとんどの用途ではこれで問題ありません。

説明:ubuntu 18.04では、デフォルトのVLCインストールは「スナップ」インストールです(デフォルトでは/ 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)

うまくいきませんでした。

お役に立てれば ...

1
JEL

@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

1
hvcyber