最近一直在忙基金申報, 今天終於順利提交了, 剩下的就看緣分啦。 今天有時間寫寫Video4linux 下視頻程式設計的流程。
Video4linux 支援的主要資料結構
video_capability
包含設備的基本資訊, 包含的成員:
name[32]; 設備名稱
type; 是否能capture, 彩色還是黑白, 是否能裁剪等等。 值如 VID_TYPE_CAPTURE 等
channels; 信號源個數
audios; 音訊設備數目
maxwidth; 支援視頻顯示的寬度上限
maxheight; 視頻顯示的高度上限
minwidth;
minheight;
video_picture
設備採集的圖像的各種屬性, 在應用程式中使用VIDIOCSPICT ioctl 來改變設備的此種屬性。 包含的成員:
brightness 亮度 0~65535
hue 色調
colour 顏色(彩色模式)
contrast 對比度
whiteness 白色度(灰度級模式)
depth 捕獲深度(配合顯示緩衝區的色彩深度)
palette 調色板資訊
video_channel
關於各個信號源的屬性,
channel 信號源的標號
name 信號源名稱
tuners tuners 的數目
flags tuner 的屬性
type 輸入類型
norm 制式
video_mbuf
利用mmap 進行映射的幀的資訊。 系統調用syscall 時會從設備返回下一個可用的影像。 而調用者
首先要設置獲取圖像的大小和格式。 通過調用ioctl 介面 VDIOCGCHAN 實現。 注意並不是所有的設備
都支援此種操作:
size 幀大小
frames 最多支援的幀數
offsets[VIDEO_MAX_FRAME] 每幀相對基址的偏移
程式設計流程:
1、打開視頻設備:視頻設備是設備檔, 可以像訪問普通檔一樣對其進行讀寫, 在我們
的平臺上, 攝像頭設備是/dev/v4l/video0。
2、讀取設備資訊
3、更改設備當前的設置(如果有必要)
4.進行視頻採集,
(1)記憶體映射(本實驗中採用)
(2)直接從設備讀取
5、對採集的視頻進行處理(本實驗中沒有做處理)
6、關閉視頻設備。
實驗步驟:
1、首先配置內核make menuconfig
(1)進入Multimedia devices ---> 選中video for Linux 後;
在video for Linux 選項展開中如下選中V4L information in proc filesystem
(2)進入USB Suppot, 在 ---USB Multimedia devices 中選中 USB OV511 Camera Support
後退出。
2、編譯內核make; make zImage;
3、燒錄kernel
4、啟動Linux, 之後插入USB 攝像頭設備, 顯示提示資訊:
5、編譯視頻採集應用程式v4lcap, 進入 /實驗目錄/v4lcap; make;
6、掛載nfs 檔案系統, 運行剛生成的v4lcap 程式
7、通過參數調整視頻輸出的尺寸,
#./v4lcap -s 320:240
8、若為中興微zx301 晶片的攝像頭, 把spca5xx.o 檔拷貝到開發板, 在開發板上插入
zx301 晶片的驅動spca5xx.o, 插入usb 攝像頭, 然後運行v4lcap 應用程式。
就寫這麼多吧, 很久沒來了, 謝謝大家一直關注我。