Linux內核用一個被稱爲V4L2的機制來管理攝像頭圖像信息,它的核心工作原理就像日本料理店常見的流轉餐桌,大廚將美食不斷放到空盤子裏,客人不斷拿來吃。
拓展:
在內核中,攝像頭所捕獲的視頻數據,我們可以通過一個隊列來存儲,我們所做的工作大致是這樣的:首先配置好攝像頭的相關參數,使之能正常工作,然後申請若干個內核視頻緩存,並且將它們一一送到隊列中,就好比三個空盤子被一一放到傳送帶上一樣。
然後我們還需要將這三個內核的緩存區通過mmap函數映射到用戶空間,這樣我們在用戶層就可以操作攝像頭數據了,緊接着我們就可以啓動攝像頭了開始數據捕獲,每捕獲一幀數據我們就可以做一個出隊操作,讀取數據,然後將讀過數據的內核緩存再次入隊,依次循環。