OrangePi-PCを使ってみる

USBカメラ

USBカメラ(WEBカメラ)を使って、Video Streamingを試してみました。
こちらのアプリを使 います。
このアプリは入力プラグインを切り替えることで、様々なビデオソースが使えるようになっています。
UVCをビデオソースとして使うときは、必要とするライブラリも1つだけという気軽さで利用することができます。
$ sudo apt install git cmake libjpeg62-turbo-dev
$ git clone https://github.com/jacksonliam/mjpg-streamer
$ cd mjpg-streamer/
$ cd mjpg-streamer-experimental/
$ make
$ sudo make install

OrangePI PCには最初から/dev/video0のデバイスが有ります。
これはオンボードカメラI/F用のデバイスです。


USBポートにカメラを繋げると、カメラはvideo1 video2として認識されます。
カメラを2台以上繋げた時は、video3 video4 .... と増えていきます。


ここでUSBカメラの能力を確認します。
USBカメラの能力は以下のコマンドで確認することができます。
$ sudo apt install v4l-utils

$ v4l2-ctl --list-formats-ext -d /dev/video1



        [0]: 'YUYV' (YUYV 4:2:2)
                Size: Discrete 640x480
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)

        [1]: 'MJPG' (Motion-JPEG, compressed)
                Size: Discrete 640x480
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.200s (5.000 fps)



ずらずらと、対応するPixel Format、解像度、フレームレートが表示されます。
今回使用するカメラは、YUYVもMJPGも640x480 30 fpsの能力を持っていることが分かりました。

MJPGを使う場合は以下のコマンドです。
デフォルトのPixel FormatはMJPG、解像度は640x480、フレームレートはカメラの能力に合わせたフレームレートが使われます。
$ export LD_LIBRARY_PATH=.

$ mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_uvc.so -r 640x480 -d /dev/video1 -q 10'

ブラウザーを開いて、OrangePiのアドレスを指定するとキャプチャー画像が表示されます。


アプリの終了は起動した端末でCTRL+Cですが、CTRL+Cを押してもMJPG-Streamerが終了しません。
こちらに回 避策が有りました。
別のコンソールから`pkill mjpg_streamer`で終了できました。

YUYVを使う場合は、Pixel Formatを指定する必要が有ります。
$ export LD_LIBRARY_PATH=.

$ mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_uvc.so --yuv -r 640x480 -d /dev/video1 -q 10'

ブラウザーを開いて、OrangePiのアドレスを指定するとキャプチャー画像が表示されます。
MJPGに比べ明らかに画質が劣化します。


このアプリには沢山の起動オプションが有ります。
以下のコマンドでオプションの詳細を見ることができます。
$ ./mjpg_streamer -i "./input_uvc.so --help"
$ ./mjpg_streamer -o "./output_http.so --help"



ZEROでは少し注意が必要です。
ZEROにはオンボードカメラI/Fが無いので、/dev/video0のデバイスが有りません。
USBポートにカメラを繋げると、カメラはvideo0 video1として認識されます。
起動時のデバイスを変える必要が有ります。
$ export LD_LIBRARY_PATH=.

$ mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_uvc.so -r 640x480 -d /dev/video0 -q 10'

続く...