在 Linux 系統下使用 USB 攝影機進行影像擷取,關鍵在於核心是否內建對應驅動。若無內建,需自行編譯安裝第三方驅動。本文以 RedHat Enterprise Linux AS 4、中星微 ZC0301 晶片(需 SPCA5xx 驅動)為例,記錄完整編譯安裝流程。
kernel-source 或 kernel-devel 套件gcc、make 等開發套件下載位址:https://mxhaard.free.fr/spca50x/Download/oldrelease/
spca5xx-20060501.tar.gz:核心驅動模組spcaview-20050501.tar.gz:使用者空間檢視工具sdl-1.2.12.tar.gz:SPCAView 依賴的 SDL 圖形庫# tar zxvf spca5xx-20060501.tar.gz
# cd spca5xx-20060501
# make
# make install
驅動模組將安裝至 /lib/modules/$(uname -r)/kernel/drivers/usb/media/,並自動更新模組相依關係。
# tar zxvf sdl-1.2.12.tar.gz
# cd sdl-1.2.12
# ./configure
# make
# make install
預設安裝至 /usr/local/lib,執行 ldconfig 更新動態連結庫快取。
# tar zxvf spcaview-20050501.tar.gz
# cd spcaview-20050501
# make
# make install
執行檔安裝至 /usr/local/bin/spcaview。
# echo 'export PATH=$PATH:/usr/local/bin' >> /etc/profile
# source /etc/profile
# reboot
# 或
# modprobe spca5xx
# spcaview -f yuv -o test.avi
-f yuv:指定輸出格式為 YUV-o test.avi:輸出檔案名稱若畫面正常顯示,即代表驅動安裝成功。
| 問題 | 可能原因 | 解決方案 |
|---|---|---|
make 報錯缺少 linux/videodev.h | 核心來源碼未安裝或版本不符 | 安裝 kernel-devel-$(uname -r),確認 /lib/modules/$(uname -r)/build 指向正確 |
裝置節點 /dev/video0 不存在 | 驅動未正確載入 | dmesg | grep spca5xx 檢查核心訊息,確認模組載入無誤 |
| SPCAView 編譯失敗找不到 SDL | SDL 未安裝或 pkg-config 路徑錯誤 | 確認 sdl-config --cflags --libs 有輸出,必要時設定 PKG_CONFIG_PATH |
目前主流發行版(Ubuntu 20.04+、CentOS 8+、Debian 10+)核心已內建 gspca 子系統支援大多數 SPCA5xx 晶片,插上即用,無需手動編譯。僅在舊版核心或特殊晶片時才需參考本文流程。