Dragonboard410c Android USB Camera 使用:mjpg-streamer介紹(一)

mjpg-streamer是一款免費基於IP地址的視頻流服務器,從webcam攝像頭採集圖像,把它們以流的形式通過基於ip的網絡傳輸到瀏覽器端,如火狐、Cambozola和VLC播放器等。它可以利用某些webcam的硬件壓縮功能來降低服務器CPU的開銷。爲嵌入式設備和一些常規服務器提供一個輕量且更少CPU消耗的方案。

在其源代碼中主要圍繞linux的v4l2接口(注意低版本內核不存在v4l2接口因此無法使用)、socket網絡編程、多線程編程。其中還包含重要的插件input-plugins和output-plugins。

mjpg-streamer採用模塊化的設計方法,以功能塊爲單位進行描述,這些功能塊被稱爲plug-in(組件)。軟件中定義好了各組件的輸入、輸出,以及組件之間的銜接關係。用戶可自行根據對功能的需求,選擇需要的模塊。這種模塊化的程序設計簡化了代碼的編寫、調試、維護,程序員只需要遵守設計的規範,就可以輕鬆地改寫軟件,或者編寫新的模塊以增強軟件的功能。

input_uvc <——————– ——————–> output_autofocus

input_file <——————– MJPG-streamer ——————–> output_file

input_testpicture <——————–

input-plugins從攝像頭讀取視頻數據,並將視頻數據複製到內存中,output-plugins將這些視頻數據進行處理,其中最重要的輸出插件是網站服務器插件,它將視頻數據傳送到用戶瀏覽器中,mjpg-streamer的工作就是將其中的一個輸入插件和多個輸出插件綁定在一起,所有的工作都是通過它的各個插件完成的。

mjpg-streamer源碼包可從SourceForge網站下載使用,也可以到我的github中下載。
https://github.com/chenguangxiang/mjpg-streamer

其中的幾個重要插件:

  • input_testpicture.so
    這是一個圖像測試插件,它將預設好的圖像編譯成一個頭文件,可以在沒有攝像頭的情況下傳輸圖像,從而方便調試程序。
  • input_uvc.so
    此文件調用USB攝像頭驅動程序V4L2,從攝像頭讀取視頻數據。
  • input_control.so
    這個文件實現對攝像頭轉動的控制接口。
  • output_http.so
    這是一個功能齊全的網站服務器,它不僅可以從單一文件夾中處理文件,還可以執行一定的命令,它可以從輸入插件中處理一幅圖像,也可以將輸入插件的視頻文件根據現有M-JPEG標準以HTTP視頻數據服務流形式輸出。
  • output_file.so
    這個插件的功能是將輸入插件的JPEG圖像存儲到特定的文件夾下,它可以用來抓取圖像。

mjpg-streamer視頻流服務器,模塊結構清晰,易於管理,利用現有網絡資源,很容易實現遠程的網絡視頻採集,克服了現有視頻採集的距離問題,開發簡單,可移植性高,並且系統運行穩定。

發佈了31 篇原創文章 · 獲贊 10 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章