發(fā)燒友實(shí)測(cè) | OKA40i-C開發(fā)板試用體驗(yàn)之遠(yuǎn)程視頻監(jiān)控
一. 開源軟件MJPG-Streamer
上次介紹了使用FFmpeg將USB攝像頭的視頻轉(zhuǎn)換為視頻流發(fā)送給PC機(jī),今天來介紹另一個(gè)解決方案MJPG-Streamer。MJPG-Streamer的原理是將USB攝像頭采集的圖像以JPEG格式發(fā)送出去,然后持續(xù)更新圖片形成一個(gè)視頻流。
它的優(yōu)勢(shì)有兩個(gè):
一是和瀏覽器的兼容性最好,可以輕松地在瀏覽器中顯示,而無需擔(dān)心瀏覽器是否支持Flash或流媒體協(xié)議;二是采用JPEG沒有前后幀的關(guān)聯(lián),所以如果出現(xiàn)丟包只影響當(dāng)前畫面,而不會(huì)像H.264那樣可能連續(xù)一段時(shí)間的馬賽克圖像。
當(dāng)然也有缺點(diǎn):
缺點(diǎn)是JPEG流的壓縮效率比較低,比H.264浪費(fèi)帶寬。
二. Libjpeg庫(kù)的編譯
MJPG-Streamer要用到libjpeg,所以首先需要編譯libjpeg。首先訪問http://www.ijg.org/下載源代碼,我使用的是最新的9e版本。將源代碼解壓到j(luò)peg-9e目錄后,在該命令下執(zhí)行configure命令進(jìn)行配置:
./configure --host=ARM-linux-gnueabihf --prefix=/mnt/boaled/jpeg-9e/_install/
其中的host是指明所使用的編譯器,prefix是指定編譯后文件安裝的目錄。
然后執(zhí)行下面的命令:
make
make install
命令執(zhí)行完畢,就會(huì)在prefix所指定的目錄下生成4個(gè)目錄,其中include目錄包括所需要的頭文件,而lib目錄下包括庫(kù)文件。這些在后面會(huì)用到。編譯后需要把libjpeg.so.9.5.0拷貝到開發(fā)板的 /usr/lib 目錄下,并建立一個(gè)指向該文件的軟連接libjpeg.so.9。
另外,開發(fā)板原來帶有l(wèi)ibjpeg.so.8.0.2這個(gè)版本。如果不希望安裝更新版本,也可以在http://www.ijg.org/files/下載和板子對(duì)應(yīng)的歷史版本。
三. MJPG-Streamer的編譯
MJPG-Streamer有兩個(gè)主要版本(建議在PC打開鏈接):
1.http://sourceforge.net/projects/mjpg-streamer/這個(gè)是原始版本,不過原作者已經(jīng)放棄更新了。
2.https://github.com/jacksonliam/mjpg-streamer/
這個(gè)是后續(xù)更新的版本。
要在飛凌嵌入式OKA40i-C開發(fā)板上使用,只能使用sourceforge那個(gè)版本。因?yàn)間ithub的版本雖然更新,但是它對(duì)內(nèi)核的版本有要求,至少3.18以上。
OKA40i-C開發(fā)板提供的內(nèi)核版本是3.10,無法正確處理新版本的某些V4L2消息。另外,github版本采用CMake進(jìn)行編譯,后面所介紹的編譯方法也不適用。
進(jìn)入下方地址:
https://sourceforge.net/p/mjpg-streamer/code/HEAD/tree/
點(diǎn)右上的“Download Snapshot”下載最新版的mjpg-streamer-code-182。這里可以看到兩個(gè)mjpg-streamer目錄。一般使用mjpg-streamer-experimental這個(gè)版本,它支持的功能更多一些。
在編譯之前,需要先修改plugins/input_uvc目錄下的makefile文件,在其中加入如下兩行:
這兩行的作用就是編譯時(shí)能夠找到我們前面生成的libjpeg庫(kù)。如果想修改MJPG-Streamer的插件設(shè)置,也可以修改mjpg-streamer-experimental目錄下的makefile:
在本次測(cè)試中用不到其他插件,所以就采用默認(rèn)配置。
然后在命令行執(zhí)行下面的命令就可以編譯了。
make CC=arm-linux-gnueabihf-gcc
編譯成功后把mjpg_streamer和幾個(gè)so文件都拷貝到飛凌的A40i開發(fā)板上并正確設(shè)置好權(quán)限就可以運(yùn)行了。
四. 測(cè)試結(jié)果
在input_testpicture插件中帶有一幅默認(rèn)圖片,即使你手上沒有攝像頭,也可以使用該插件測(cè)試MJPG-Streamer的功能。在開發(fā)板的終端輸入如下命令:
./mjpg_streamer -i "input_testpicture.so"
如果使用USB攝像頭,需要使用input_uvc.so插件,在開發(fā)板的終端輸入命令,結(jié)果如下圖所示:
./mjpg_streamer -i "input_uvc.so -r 800x600" -o "output_http.so"
想要了解有關(guān)飛凌嵌入式OKA40i-C開發(fā)板的更多詳情,歡迎大家點(diǎn)擊下圖進(jìn)入飛凌嵌入式官網(wǎng)
擴(kuò)展閱讀:《發(fā)燒友實(shí)測(cè) | 用OKA40i-C開發(fā)板玩轉(zhuǎn)FFmpeg》
相關(guān)產(chǎn)品 >
-
FETA40i-C核心板
Allwinner A40i是全志開發(fā)的一款工業(yè)級(jí)處理器,A40i作為全國(guó)產(chǎn)工業(yè)級(jí)芯片中的佼佼者,采用更低功耗的4核ARM Cortex-A7架構(gòu),工作溫度-40-85℃,是一款高性能低功耗超高性能CPU主芯片。飛凌嵌入式深度研究全志A40i芯片參數(shù)、原理圖、datasheet規(guī)格書推出了以FETA40i核心板為主的一系列全國(guó)產(chǎn)工業(yè)級(jí)嵌入式計(jì)算機(jī)板卡,并提供了用于評(píng)估的A40i工控板、 A40i開發(fā)板。 了解詳情 -
OKA40i-C開發(fā)板
國(guó)產(chǎn)工業(yè)級(jí),高清輸出,豐富接口|OKA40i開發(fā)板采用底板+核心板結(jié)構(gòu),基于全志工控行業(yè)平臺(tái)級(jí)處理器四核Cortex-A7 A40i設(shè)計(jì),主頻1.2GHz,集成MAli400MP2 GPU,內(nèi)存1GB/2GB DDR3L,存儲(chǔ)8GB eMMC。 全志A40i工控行業(yè)芯片平臺(tái) A40i為國(guó)產(chǎn)工控行業(yè)芯,全志A40i處理器代表了Allwin在智能工業(yè)控制領(lǐng)域的成就。飛凌嵌入式A40i系列OKA40i-C開發(fā)板是飛凌推出的一款中國(guó)芯,全國(guó)產(chǎn)級(jí)工業(yè)級(jí)開發(fā)板,適用于適用于基于視覺交互的工業(yè)控制產(chǎn)品 了解詳情