Ubuntu 20.04 LTSでUSB接続のWEBカメラを使う

Ubuntu 20.04 LTSでUSB接続のWEBカメラを使う

Ubuntu 20.04 LTSをインストールしたノートパソコンで、USB接続のWEBカメラが使えるのか試してみました。

コロナ禍でWEB会議だのリモート飲み会だのが増えて、ノートPC内臓のカメラでなんとかしていたのですが、画質や角度(設置場所)などの問題があってWEBカメラを購入しました。

購入したのはエレコムの WEBカメラ WEBCAM-101BK 。 マイク内蔵 、 高解像度 Full HD1920×1080ピクセル対応 、オートフォーカス、カメラシャッター付。価格は3,500円くらいだったかと思います。

Windowsの場合はUSB接続すればすぐに使えるのですが、Ubuntuの場合はどうなんでしょうか。USBのWEBカメラをUbuntuマシンに接続すらしたことがなかったので今回試してみました。

USB接続を確認する(lsusb)

現在のLinux(Ubuntu)のカーネルは、ほとんどのWEBカメラに対応しているとのことで、設定をしなくても動作するらしいです。そういえば、ノートパソコンの内臓のカメラはソフト(例えばCheese)を起動すれば何もしてなくても使えます。

ノートパソコンの内臓カメラは設定しなくても使える(Cheese)

では、USB接続のWEBカメラはどうなんでしょうか。接続してみます。まずはUSB接続自体が認識されいるか、「lsusb」コマンドで確認してみます。

USB接続確認

WEBカメラをUSB接続し、認識しているか「lsusb」コマンドで確認してみます。


#lsusb でUSB接続を確認してみます
lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:07dc Intel Corp. 
Bus 001 Device 010: ID 1bcf:28c4 Sunplus Innovation Technology Inc. FHD Camera Microphone 
#↑これがUSB接続のWEBカメラ
Bus 001 Device 002: ID 04f2:b3b1 Chicony Electronics Co., Ltd TOSHIBA Web Camera - HD
#↑これは内臓のWEBカメラ
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

#他のデバイスを接続したときの例です(本編との関係は薄)
#上記に加えて、ゲーミングマウスとUSBメモリを接続した場合です。

lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 046d:c092 Logitech, Inc. G203 LIGHTSYNC Gaming Mouse
#↑ロジテックのゲーミングマウス
Bus 001 Device 007: ID 0411:0110 BUFFALO INC. (formerly MelCo., Inc.) USB Flash Disk
#↑バッファローのUSBメモリ
Bus 001 Device 003: ID 8087:07dc Intel Corp. 
Bus 001 Device 004: ID 1bcf:28c4 Sunplus Innovation Technology Inc. FHD Camera Microphone
#↑USB接続のWEBカメラ
Bus 001 Device 002: ID 04f2:b3b1 Chicony Electronics Co., Ltd TOSHIBA Web Camera - HD
#↑内臓のWEBカメラ
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
 

あたりまえですが、認識されています。

カメラの詳細設定ツール v4l-ctl を使う

v4l2-ctl は、そのマニュアルに
NAME v4l2-ctl – An application to control video4linux drivers
とあるとおりビデオ周りの情報取得や設定をするアプリケーションです。

例えば、「v4l2-ctl –list-devices」を実行すると、利用可能なカメラのリストが表示されますし、「v4l2-ctl -d /dev/video2 -c contrust=80」を実行すると、デバイスを指定してコントラストの値を変更(この場合は80に設定)できたりします。

1,v4l-utils のインストール

「 v4l2-ctl 」を使うためには、「v4l-utils」がインストールされていなくてはなりません。


#v4l-utilsをインストールします
sudo apt install v4l-utils
[sudo] ****** のパスワード:   #パスワードの入力を求められたら入力します

#以下のように進捗状況が表示されてインストールされます(読み飛ばしてください)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
v4l-utils はすでに最新バージョン (1.18.0-2build1) です。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libllvm11 shim
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。

#必要ないということなので、削除を実行します
sudo apt autoremove
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  libllvm11 shim
アップグレード: 0 個、新規インストール: 0 個、削除: 2 個、保留: 2 個。
この操作後に 83.2 MB のディスク容量が解放されます。
続行しますか? [Y/n] y

#「y」を入力します

(データベースを読み込んでいます ... 現在 209827 個のファイルとディレクトリがインストールされています。)
libllvm11:amd64 (1:11.0.0-2~ubuntu20.04.1) を削除しています ...
shim (15.4-0ubuntu9) を削除しています ...
libc-bin (2.31-0ubuntu9.2) のトリガを処理しています ...

#インストールと不要になったファイルの削除が完了します
 

2,利用できるWebカメラの一覧を取得する

v4l2-ctl で利用可能なWEBカメラの一覧を取得してみます。


#利用可能なWEBカメラの一覧を表示しています
v4l2-ctl --list-devices
TOSHIBA Web Camera - HD: TOSHIB (usb-0000:00:14.0-10): #内臓カメラ
	/dev/video0
	/dev/video1
FHD Camera Microphone: FHD Came (usb-0000:00:14.0-14): #USB接続のWEBCAM-101BK
	/dev/video2
	/dev/video3

#USB接続のカメラを外して実行すると、外されたカメラは表示されません
v4l2-ctl --list-devices
TOSHIBA Web Camera - HD: TOSHIB (usb-0000:00:14.0-10): #内臓カメラ
	/dev/video0
	/dev/video1
#↑外したUSBカメラはリストにない
 

3,デバイスに関する全ての情報を表示する

デバイスの全ての情報を表示するには、v4l2-ctl -d /dev/video2 –all を実行します。


#デバイスの全ての情報を表示します
v4l2-ctl -d /dev/video2 --all
Driver Info:
	Driver name      : uvcvideo
	Card type        : FHD Camera Microphone: FHD Came
	Bus info         : usb-0000:00:14.0-14
	Driver version   : 5.11.22
	Capabilities     : 0x84a00001
		Video Capture
		Metadata Capture
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps      : 0x04200001
		Video Capture
		Streaming
		Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
	Width/Height      : 800/600
	Pixel Format      : 'YUYV' (YUYV 4:2:2)
	Field             : None
	Bytes per Line    : 1600
	Size Image        : 960000
	Colorspace        : sRGB
	Transfer Function : Rec. 709
	YCbCr/HSV Encoding: ITU-R 601
	Quantization      : Default (maps to Limited Range)
	Flags             : 
Crop Capability Video Capture:
	Bounds      : Left 0, Top 0, Width 800, Height 600
	Default     : Left 0, Top 0, Width 800, Height 600
	Pixel Aspect: 1/1
Selection Video Capture: crop_default, Left 0, Top 0, Width 800, Height 600, Flags: 
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 800, Height 600, Flags: 
Streaming Parameters Video Capture:
	Capabilities     : timeperframe
	Frames per second: 15.000 (15/1)
	Read buffers     : 0
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=0 value=0
                       contrast 0x00980901 (int)    : min=0 max=95 step=1 default=1 value=1
                     saturation 0x00980902 (int)    : min=0 max=100 step=1 default=64 value=64
                            hue 0x00980903 (int)    : min=-2000 max=2000 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=100 max=300 step=1 default=100 value=100
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
				0: Disabled
				1: 50 Hz
				2: 60 Hz
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=1 max=7 step=1 default=2 value=2
         backlight_compensation 0x0098091c (int)    : min=0 max=1 step=1 default=1 value=1
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
				1: Manual Mode
				3: Aperture Priority Mode
              exposure_absolute 0x009a0902 (int)    : min=3 max=2047 step=1 default=166 value=166 flags=inactive
                 focus_absolute 0x009a090a (int)    : min=0 max=1023 step=1 default=0 value=300 flags=inactive
                     focus_auto 0x009a090c (bool)   : default=0 value=1
 

ここにある情報を書き換えることによって、カメラの設定を変えることができます。例えば、「contrast」に注目してみると、min=0 max=95 step=1 default=1 value=1 となっています。最小値が0,最大値が95で1段階づつ設定でき、デフォルトは1,現在の設定値は1となります。この設定値を買えることで、コントラストを変えることができるというわけです。

4,設定値を変えてみる

#カメラの設定を変えてみる
#以下の例ではコントラストの値を変更しています

v4l2-ctl -d /dev/video2 -C contrast  # デバイスを指定してコントラストの値を表示
contrast: 1
v4l2-ctl -d /dev/video2 -c contrust=80 #デバイスを指定してコントラストの値を変更
v4l2-ctl -d /dev/video2 -C contrast  #値が変更されているかチェックしてます
contrast: 80 

#スイッチが大文字のCと小文字のcと分かり辛いですが、大文字のCはCheck、小文字のcはchangeなんですかね。
 

「Cheese」を使って動作を確認する

なんとなく分かったところで、「Cheese」を使ってUSB接続のWEBカメラで写真を撮影しました。特に問題はなさそうです。

内臓カメラとUSBカメラは→で切り替えます

変更した設定は、再起動、USBポート変更するとどうなるのか

設定を変更できることは分かりましたが、変更した値はシステムを再起動するとどうなるのでしょうか? USBポートを変更するとどうなるのでしょうか? あるいは、設定した値は他のアプリにも影響するのでしょうか。理解しきれていないのですが、簡単な実験をしてみました。

1,設定値を変更した例

コントラスト設定値=2
極端な例ですが、コントラスト設定値=80

2,設定値は再起動するとどうなるのか?

変更した値はPCの再起動でどうなるのか実際に試してみました。

#ブライトネスとコントラストの値をそれぞれ-30、3に変更してみます
v4l2-ctl -d /dev/video2 -c brightness=-30
v4l2-ctl -d /dev/video2 -c contrast=3

#ここでシステムの再起動

#再起動後v4l2-ctlで確認
#値は再起動前に変更した値を保持しています
brightness 0x00980900 (int)  : min=-64 max=64 step=1 default=0 value=-30
contrast 0x00980901 (int)    : min=0 max=95 step=1 default=1 value=3
 
#デバイスの番号は変わってしまうことがあるようです。

3,設定値はUSBポートを変更するとどうなるのか?

変更した値はポートを変えるとどうなるのか実際にやってみました。Dynabookの右サイドにあるUSBポートから左側にあるUSBポートに挿し変えてみました。

「Cheese」を起動したまま挿し変えると、画面に「ウェブカムからビデオを再生する際にエラーが発生しました」と表示されますが、「Cheese」を再起動すると正常に画面に表示されるようになります。

 
#USBポートチェンジ後
#値は保持されています

brightness 0x00980900 (int) : min=-64 max=64 step=1 default=0 value=-30
contrast 0x00980901 (int)   : min=0 max=95 step=1 default=1 value=3
 

4,別のアプリ(Camoso)には影響するのか試してみる

設定は別のアプリにも反映(影響)するのでしょうか? 今回はCamosoというCheeseに似たアプリで試してみました。CamosoはCheeseのようにデバイスが複数接続されている場合、それを選択する機能がありません。実験するためにBIOSを起動して内臓カメラを一時的にOFF(使用しない設定)にして実験しました。

内臓のカメラをいったんOFFにして実験
Camosoで試してみます

左右反転していますが、コントラストとブライトネスの設定値は反映されているようです。

アイキャッチ画像・トップ画像
Alexandr IvanovによるPixabayからの画像

PC-Life,UbuntuUbuntu

Posted by pman-bros