考前最后一周晚課上抬闷,我們學(xué)習(xí)了基于Linux上的v4l2視頻采集。下面則是我查閱資料關(guān)于V4L2的一點(diǎn)解說(shuō)荡灾。
Video4linux2(簡(jiǎn)稱V4L2),是linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng)。
操作系統(tǒng)一般把系統(tǒng)使用的內(nèi)存劃分成用戶空間和內(nèi)核空間遗契,分別由應(yīng)用程序管理和操作系統(tǒng)管理黍少。應(yīng)用程序可以直接訪問(wèn)內(nèi)存的地址,而內(nèi)核空間存放的是供內(nèi)核訪問(wèn)的代碼和數(shù)據(jù)航徙,用戶不能直接訪問(wèn)如贷。v4l2捕獲的數(shù)據(jù),最初是存放在內(nèi)核空間的到踏,這意味著用戶不能直接訪問(wèn)該段內(nèi)存杠袱,必須通過(guò)某些手段來(lái)轉(zhuǎn)換地址。
v4l2一共有三種視頻采集方式:使用read窝稿、write方式楣富;內(nèi)存映射方式和用戶指針模式。
read伴榔、write方式纹蝴,在用戶空間和內(nèi)核空間不斷拷貝數(shù)據(jù)庄萎,占用了大量用戶內(nèi)存空間,效率不高塘安。
內(nèi)存映射方式:把設(shè)備里的內(nèi)存映射到應(yīng)用程序中的內(nèi)存控件惨恭,直接處理設(shè)備內(nèi)存,這是一種有效的方式耙旦。上面的mmap函數(shù)就是使用這種方式脱羡。
用戶指針模式:內(nèi)存片段由應(yīng)用程序自己分配。