2012-02-25 81 views
4

這是我在這裏的第一篇文章,我希望我能找到一些幫助V4L2視頻採集例如

我工作的嵌入式linux三星OK6410板和OV9650 CMOS攝像頭

我要捕獲視頻並將其保存在SD卡上

我想使用捕獲視頻的循環緩衝區,當它滿了時,允許新數據覆蓋舊的數據。

有是,凸起的情況下,捕獲持續10秒鐘,然後停止的標誌。視頻保存到SD卡應包含提升標誌前10秒和提升後10秒。

我讀了捕獲例如在V4L2的API規範的官方網站在這裏

http://free-electrons.com/kerneldoc/latest/video4linux/API.html

但也有我無法理解或不知道如果我理解正確

一些要點
  1. 在這個例子中,有4個幀緩衝區,每個緩衝區可以保存一個幀。這是正確的嗎?

  2. 有一個變量(frame_count)被初始化爲70,這​​是否意味着通過完成這個程序,我將有一個包含70幀的視頻?

  3. fns(主循環)和(讀取幀)做了什麼?我知道他們應該做什麼,但無法理解書面代碼,環..等

  4. 我該如何調整這個代碼中的fps?或者我應該在相機寄存器中寫入值?

  5. 捕獲視頻後,我將有一個填充了原始數據的緩衝區,我想壓縮它或使用編解碼器將其保存爲MPEG,我可以改變要壓縮的像素格式(例如MPEG) YUYV的?或者我應該怎麼做來壓縮視頻?編解碼器還是什麼?

  6. 我可以在緩衝區中將這些原始數據寫入文件.yuv嗎?我發現了一些可以播放這種格式的視頻的軟件。

  7. 是否可以使用循環緩衝區而不是線性緩衝區來保存捕獲的視頻?

我知道我的帖子太長,但我是一個新手,找不到任何教程,可以幫助我編寫我的代碼。

在此先感謝

+0

從自由電子的另一鏈路:http://free-electrons.com/kerneldoc/latest/DocBook/media_api/index.html – 2013-02-24 01:01:44

+0

所有鏈路斷開 – irobo 2018-03-08 18:09:50

回答

6

,你要鏈接返回404,但如果你正在尋找的文件,你應該檢查這個http://v4l2spec.bytesex.org/spec/,特別是檢查這個example,這是一個很好的起點做的頁面你想要什麼。

因爲我認爲我猜你指的是代碼,我試着回答您的問題

  1. 4個緩衝器被用來做雙緩衝,即你出列的框架並在其上運行,而其他獲得由視頻輸入
  2. 充滿如果是在我聯繫的例子,沒有它只是抓住從輸入70幀,然後退出。
  3. read_frame離隊從緩衝區中的幀,這樣就可以對操作並重新添加到隊列中時,即可大功告成。
  4. 調整FPS,你需要出隊,並重新排隊幀驅動程序沒有做任何事情。修改fps是通過跳幀完成的。
  5. 一概而論,它取決於你的驅動器和編碼器。您需要查找驅動程序和編碼器都支持的視頻格式(例如V4L2_PIX_FMT_YUYV)。如果它不存在,那麼你需要編寫你自己的顏色空間轉換例程。
  6. 當然!我經常這樣做。
  7. 我不明白的問題。
+0

的例子鏈路斷開:( – irobo 2018-03-08 17:47:40