2014年1月9日星期四

Linux /dev/video* 遺失問題

雖然現代的 Linux 都非常智能,對於隨插即用的 USB 裝置辨認速度非常快,而且會自動安裝驅動程式 (如伺服器有)
完全不需使用者等候及操作便能立即使用 USB 裝置
不能這種方便的安裝置通常都需要在安裝 Linux 前已經連接 USB 裝置
當安裝 Linux 時便會自動載入及安裝 USB 裝置的模組
但有時會連接 USB Web Camera 仍不懂自動創建 /dev/video* 的裝置檔案,導致未能使用

發生這種情況首先輸入
ls -l /dev/video*
確認是否擁有 /dev/video* 的裝置檔案

Web Camera 在 Linux 上是一種稱為 Video for Linux (或稱 Video4Linux 或簡稱 V4L) 的裝置
是一種 Character devices ,major 編號為 81 ,能支援 minor 編號為 0 至 63
即是 Linux 能支援最多 64 個 Web Camera 安裝

假如只有一個 Web Camera 安裝,輸入
sudo mknod /dev/video0 c 81 0
便可以新增 Web Camera 裝置

由於使用 Web Camera 裝置需要存取讀取及寫入權限,輸入
sudo chmod 0666 /dev/video*
使用 /dev/video* 為方便將所有 Web Camera 裝置設定成相同權限

另外為了方便管理,通常會將 Web Camera 裝置列入 video 群組,輸入
sudo chgrp video /dev/video*

再次輸入
ls -l /dev/video*
查看 Web Camera 安裝
會顯示
crw-rw-rw- 1 root video 81, 0 www   d hh:mm /dev/video0
權限顯示會以 c 為首,指這檔案為 Character device 檔案
擁有者 為 root
群組 為 video
major 編號 為 81
minor 編號 為 0 (對應 /dev/video0 ,若安裝第二個 Web Camera 可以使用 /dev/video1 , minor 編號為 1)

然後可以使用 VLC 來測試


以 VLC 開啟 Capture Device
Capture Mode 選擇 Video for Linux 2
Video device name 選擇 /dev/video* (因為閣下不一定使用 /dev/video0)
或不選擇任何讓 Video for Linux 2 自動偵測 /dev/video*
然後按 Play


有時第一次測試會失敗,可能是剛安裝 /dev/video* , VLC 其實仍未偵測到最新的裝置
或 VLC 基於 /dev/video0 自動創建 /dev/video1 來運作,重新開啟 /dev/video* 便可以播放
(在下用在下的肥金魚做測試目標)

或在 Terminal 輸入
vlc v4l2://
讓 vlc 利 Video for Linux 2 自動偵測 /dev/video* 亦可

沒有留言 :

發佈留言