ubuntu18.04でのv4l2loopbackの利用について | sy-engのブログ

sy-engのブログ

システムを作りたい。
自分用の記録。

ubuntu18.04でv4l2loopbackを利用するとうまく動作しない。

プログラムを動かすとフォーマットの書き込みが失敗している様子。

(xioctl(fdwr, VIDIOC_S_FMT, &vid_format)が-1を返している。)

 

作者が積極的に編集しているので最新がどうなるかはわからないが、

https://github.com/umlaeute/v4l2loopback/issues/247

あるような状況で、どうもubuntu18.04ではaptでインストールされる0.10.1ではうまく動かなくて、ソースからインストールする

0.12.3くらいにしないとエラーが出る。(それでもv4l2loopback-ctlなどで実施する2回目のフォーマット更新がうまくいかない気がするが、

実用上は問題なさそうなのでしばらく保留。)

 

何はともあれ、aptでインストールした、v4l2loopbackを一度消して、手動でインストール。

なお、OSが18.04でなければ、もっと新しいバージョンになっているようなので、問題は起きない。少なくとも19.04では

デフォルトで0.12.3が入る様子。

 

以下、参考。

$ v4l2-ctrl -d /dev/video(仮想デバイスの番号) --all

Driver Info (not using libv4l2):
        Driver name   : v4l2 loopback
        Card type     : mysink
        Bus info      : platform:v4l2loopback-000
        Driver version: 5.3.18
        Capabilities  : 0x85208001
                Video Capture
                Video Memory-to-Memory
                Read/Write
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps   : 0x85208001
                Video Capture
                Video Memory-to-Memory
                Read/Write
                Streaming
                Extended Pix Format
                Device Capabilities
Priority: 0
Video input : 0 (loopback: ok)
(ここからフォーマットの情報が表示されない。)

Format Video Capture:
        Width/Height      : 640/480
        Pixel Format      : 'RGB3'
        Field             : None
        Bytes per Line    : 1920
        Size Image        : 921600
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Full Range)
        Flags             : 
Format Video Output:
        Width/Height      : 640/480
        Pixel Format      : 'RGB3'
        Field             : None
        Bytes per Line    : 1920
        Size Image        : 921600
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Full Range)
        Flags             : 

(ここまでが表示されていなかったと思う。)
Streaming Parameters Video Capture:
        Frames per second: 30.000 (30/1)
        Read buffers     : 8
Streaming Parameters Video Output:
        Frames per second: 30.000 (30/1)
        Write buffers    : 8

User Controls

                    keep_format 0x0098f900 (bool)   : default=0 value=1
              sustain_framerate 0x0098f901 (bool)   : default=0 value=1
                        timeout 0x0098f902 (int)    : min=0 max=100000 step=1 default=0 value=0
               timeout_image_io 0x0098f903 (bool)   : default=0 value=0