考前最后一周晚課上,我們學習了基于Linux上的v4l2視頻采集。下面則是我查閱資料關于V4L2的一點解說。
Video4linux2(簡稱V4L2),是linux中關于視頻設備的內(nèi)核驅(qū)動。
操作系統(tǒng)一般把系統(tǒng)使用的內(nèi)存劃分成用戶空間和內(nèi)核空間,分別由應用程序管理和操作系統(tǒng)管理。應用程序可以直接訪問內(nèi)存的地址,而內(nèi)核空間存放的是供內(nèi)核訪問的代碼和數(shù)據(jù),用戶不能直接訪問。v4l2捕獲的數(shù)據(jù),最初是存放在內(nèi)核空間的,這意味著用戶不能直接訪問該段內(nèi)存,必須通過某些手段來轉(zhuǎn)換地址。
v4l2一共有三種視頻采集方式:使用read、write方式;內(nèi)存映射方式和用戶指針模式。
read、write方式,在用戶空間和內(nèi)核空間不斷拷貝數(shù)據(jù),占用了大量用戶內(nèi)存空間,效率不高。
內(nèi)存映射方式:把設備里的內(nèi)存映射到應用程序中的內(nèi)存控件,直接處理設備內(nèi)存,這是一種有效的方式。上面的mmap函數(shù)就是使用這種方式。
用戶指針模式:內(nèi)存片段由應用程序自己分配。