關(guān) 閉

新聞中心

EEPW首頁 > 安全與國防 > 設計應用 > 基于QEMU視頻監(jiān)控系統(tǒng)的設計與實現(xiàn)*

基于QEMU視頻監(jiān)控系統(tǒng)的設計與實現(xiàn)*

作者:連赟(浙江開放大學,杭州 310012) 時間:2023-05-25 來源:電子產(chǎn)品世界 收藏
編者按:從嵌入式的發(fā)展背景以及產(chǎn)品開發(fā)過程中出現(xiàn)的開發(fā)周期時間長、軟硬件錯誤難定位等問題出發(fā),基于QEMU虛擬化技術(shù),通過模擬硬件+軟件的方式設計實現(xiàn)了一種基于QEMU的嵌入式軟件開發(fā)方法,最后設計實現(xiàn)了一款視頻監(jiān)控系統(tǒng)驗證該方案的可行性。通過實驗表明,基于QEMU的嵌入式軟件開發(fā)方法可在脫離硬件產(chǎn)品約束的情況下快速進行軟件的功能開發(fā)和系統(tǒng)測試,提高嵌入式軟件開發(fā)效率。

*基金項目: 1. 浙江開放大學312人才培養(yǎng)工程課題研究成果,項目編號:60

本文引用地址:http://2s4d.com/article/202305/446963.htm

2. 浙江開放大學2022年專業(yè)教學團隊建設項目,項目編號:ZYJXTD202202

0 引言

系統(tǒng)是軟硬件相結(jié)合、定制化、產(chǎn)品化相結(jié)合的復雜性系統(tǒng)工程,它涉及半導體、電子信息、信號處理、軟件工程等多學科的知識與技能,已經(jīng)廣泛地應用于消費電子、國防工業(yè)、物聯(lián)網(wǎng)、家居安防、政務教育等諸多領(lǐng)域[1],并且隨著操作系統(tǒng)的應用和技術(shù)的成熟,產(chǎn)品更加多樣化,迭代速度更加快速。

在設計開發(fā)某款產(chǎn)品時,業(yè)內(nèi)常見的做法通常會選用某款開發(fā)板,根據(jù)產(chǎn)品需求訂制所需CPU 型號、RAM、ROM、電源模塊、顯示模塊等硬件環(huán)境,選定操作系統(tǒng)平臺及該平臺上所使用的各項開發(fā)工具,例如編譯器、鏈接器等。根據(jù)廠家的硬件規(guī)格與軟件說明編譯出在目標平臺(開發(fā)板)上運行的鏡像文件,通過JTAG 等燒錄工具燒錄到目標平臺上。完成軟硬件環(huán)境的搭建后,之后才進入嵌入式應用程序的開發(fā)環(huán)節(jié)。

然而,嵌入式系統(tǒng)開發(fā)前期過程中存在著硬件經(jīng)濟成本高、環(huán)境搭建復雜繁瑣、軟件開發(fā)周期長、問題錯誤定位難、學習者學習成本高等問題,特別對于初學者在遇到開發(fā)板硬件問題時,較難判斷問題原因以及尋求一對一指導解決。如何解決上述諸多問題,已成為嵌入式軟件從業(yè)者迫切需要研究的問題。

1 軟件開發(fā)

最初是由法國程序員Fabrice Bellard 開發(fā)的一個開源模擬器,廣泛應用于虛擬化和硬件仿真。能夠完成用戶程序模擬和系統(tǒng)虛擬化模擬。用戶程序模擬指的是QEMU 能夠?qū)⒁粋€平臺編譯的二進制文件運行在另一個不同的平臺,如一個ARM 指令集的二進制程序,通過QEMU 的TCG(Tiny CodeGenerator)引擎的處理之后,ARM 指令被轉(zhuǎn)換成TCG中間代碼,然后再轉(zhuǎn)換成目的平臺的代碼。系統(tǒng)虛擬化模擬是指QEMU 能夠模擬出一臺擁有自己的虛擬CPU、芯片組、虛擬內(nèi)存以及各種虛擬外部設備的完整系統(tǒng)虛擬機,能夠?qū)⑴c物理計算機完全一致的硬件視圖呈現(xiàn)在虛擬機中運行的操作系統(tǒng)和應用軟件上。QEMU 能夠模擬的平臺很多,包括x86、ARM、MIPS等等,比如QEMU 可以虛擬一個基于x86 架構(gòu)PC 主機的基于ARM 架構(gòu)的開發(fā)板,運行嵌入式的和應用程序。

QEMU 通過支持對ARM 平臺的指令級仿真,使目標系統(tǒng)運行在仿真環(huán)境中,就像運行在真實的物理環(huán)境中一樣,在嵌入式系統(tǒng)的開發(fā)過程中,通過建立虛擬硬件環(huán)境,使嵌入式軟件在沒有實體硬件環(huán)境的情況下運行,能夠為軟件開發(fā)者提供一個開發(fā)和測試的平臺,開發(fā)效率大大提高,QEMU 可以模擬很多體系結(jié)構(gòu)以及硬件板子,包括ARM Cortex A9 系列的Vexpress 板子、支持ARM64 的Virt 板子以及RISC-V 的板子等。具體操作上只需要1 臺安裝了Linux 發(fā)行版的個人計算機即可,使用QEMU 虛擬機來打造ARM 實驗平臺,它具有如下特點,見表1。

1684990676167417.png

本文基于QEMU 虛擬機模擬4 核Cortex-A9 的Versatile Express 開發(fā)平臺,完成Linux4.0 和根文件系統(tǒng)的移植工作,并在搭建的虛擬平臺上設計實現(xiàn)了嵌入式視頻監(jiān)控器,用戶可以在通過網(wǎng)絡遠程訪問并拉取音視頻流媒體。通過該案例以驗證基于QEMU 的嵌入式軟件開發(fā)方法是可行有效的,過程簡化為如下步驟和內(nèi)容:

1)在開發(fā)平臺上建立開發(fā)環(huán)境。選擇Ubuntu、CentOS、Fedora 等Linux 發(fā)行版,下載安裝GCC 交叉編譯器等依賴軟件,下載安裝QEMU;

2)建立根文件系統(tǒng)。下載Busybox 進行功能裁剪,制作一個最基本的根文件系統(tǒng);

3)下載開源操作系統(tǒng)Linux 源碼并編譯,選擇4.0版本;

4)編寫編譯應用程序;

5)啟動QEMU 運行內(nèi)核、根文件系統(tǒng),在QEMU中執(zhí)行應用程序,見圖1。

1684990736214055.png

圖1 QEMU嵌入式系統(tǒng)開發(fā)流程

對比傳統(tǒng)的嵌入式軟件開發(fā)方法,基于QEMU 的嵌入式軟件開發(fā)方法流程更精簡、開發(fā)更高效、成本更低廉,見表2。

1684990809321988.png

2 設計

是一種電子系統(tǒng)或網(wǎng)絡系統(tǒng),通過攝像機查看所在位置的情況,同時將該位置情況的圖像、聲音傳送到中心控制系統(tǒng),便于對異常情況的及時發(fā)現(xiàn)、記錄和處置,廣泛應用于公安、消防、交通、銀行、醫(yī)療、工廠等眾多行業(yè)的安全保衛(wèi)和現(xiàn)場管理,一般由前端攝像、傳輸、控制、顯示和記錄等主要部分組成,簡而言之,主要包括對攝像頭采取實時拉流、設備控制等操作。本文設計實現(xiàn)了一款基于QEMU 的視頻控制系統(tǒng),該系統(tǒng)對外提供自定義私有協(xié)議和RTSP 協(xié)議,分別對外提供攝像頭的系統(tǒng)控制服務和RTSP 音視頻流媒體服務。

2.1 中心控制系統(tǒng)

中心控制系統(tǒng)采用平臺圖形用戶界面應用程序開發(fā)框架QT 編程實現(xiàn),程序啟動后創(chuàng)建線程等待視頻控制系統(tǒng)連接,視頻控制系統(tǒng)啟動后完成USB 攝像頭初始化并啟動流媒體服務。待雙方建立Socket 連接后,根據(jù)自定義私有協(xié)議,中心控制系統(tǒng)獲取到視頻控制系統(tǒng)的RTSP URL 地址,并調(diào)用視頻播放組件實時拉取音視頻流數(shù)據(jù),實現(xiàn)視頻監(jiān)控功能,見圖2。

1684990951318859.png

圖2 中心控制系統(tǒng)和視頻監(jiān)控系統(tǒng)流程圖

2.2 視頻監(jiān)控系統(tǒng)

1)內(nèi)核環(huán)境準備

選擇Ubuntu 發(fā)行版,下載安裝GCC 交叉編譯器等依賴軟件:sudo apt-get install libncurses5-dev gccarm-linux-gnueabi build-essential,下載安裝QEMU:sudo apt install qemu-system-arm。下載Busybox 進行功能裁剪,制作一個最基本的根文件系統(tǒng)。下載Linux內(nèi)核源碼并編譯。

2)編寫應用程序

RTSP 是一種網(wǎng)絡控制協(xié)議,被設計用于多媒體通信系統(tǒng)中建立和控制流媒體服務器。流媒體數(shù)據(jù)本身的傳輸并不是RTSP 的任務,實現(xiàn)上還要搭配RTP、RTCP 來完成真正意義上的碼流傳輸及控制。協(xié)議分工如下:RTSP 負責建立和控制會話(默認端口:554),基于TCP 實現(xiàn);RTP 負責傳輸流媒體數(shù)據(jù);RTCP 負責與RTP 控制流量統(tǒng)計。要實現(xiàn)視頻監(jiān)控系統(tǒng)的RTSP 音視頻流媒體服務,需要實現(xiàn)圖像采集、圖像轉(zhuǎn)換、視頻編碼、視頻分發(fā)等環(huán)節(jié)步驟,見圖3。

1684991022468626.png

圖3 視頻監(jiān)控系統(tǒng)RTSP服務流程圖

ffmpeg 有著強大的視頻采集、視頻格式轉(zhuǎn)換、視頻編碼、視頻解碼等功能,可用于音視頻的記錄、轉(zhuǎn)換,并能將其轉(zhuǎn)化為數(shù)據(jù)流。圖像采集模塊設置video4linux2 的采集方式,設置分辨率、圖像格式、采集幀率等參數(shù),并打開攝像頭(/dev/video0), 在循環(huán)中不斷采集圖像幀,然后進行下一步的圖像轉(zhuǎn)換和編碼處理。圖像轉(zhuǎn)換模塊設置源圖像格式Y(jié)UV422 以及目標圖像格式Y(jié)UV420,轉(zhuǎn)換后存放在AVFrame 中,給下一編碼環(huán)節(jié)使用。視頻編碼模塊設置分辨率、幀率、圖像格式、碼率等參數(shù)后,向編碼器添加1 幀上一環(huán)節(jié)的YUV420 圖像,讀取到H.264 視頻編碼幀之后傳遞給RTSP 服務模塊分發(fā)數(shù)據(jù)。

Live555 是1 套使用開放標準協(xié)議(RTP/RTCP,RTSP, SIP) 的用于多媒體拉流的開源C++ 庫。該開源庫能夠讀取,接收和處理MPEG, H.265, H.264, H.263+,DV 或者JPEG 視頻[],以及其他的音視頻編碼格式,也可以用于構(gòu)建基本的RTSP 客戶端和服務器。

基于live555 實現(xiàn)RTSP 協(xié)議服務功能, 包含OPTIONS、DESCRIBE、SETUP、PLAY、PAUSE、TAERDOWN 等方法。在live555 中RTSP 是1 個攝像頭的RTSP 會話對應1 個ServerMediaSession,而每個RTSP 會話需要傳輸視頻、音頻等碼流,而每一個流對應 ServerMediaSubSession,對于視頻流,常見的編碼格式有H.264、H.265 等,可將攝像頭的圖像編碼為H.264格式, 因此采用H264VideoFileServerMediaSubSession實現(xiàn)ServerMediaSubSession。最后將移植編譯成功的ffmpeg 和live555 二進制文件拷貝至kmodules 共享目錄中,在QEMU 輸入框啟動視頻監(jiān)控系統(tǒng)。

3)啟動應用程序

啟動1 個帶有集成網(wǎng)絡攝像頭的QEMU 虛擬機,設置參數(shù)-device usb-host,hostbus=1,hostaddr=3,其中1 和3 分別代表總線和設備值。同時指定硬件平臺、內(nèi)核數(shù)量、內(nèi)存大小、內(nèi)核鏡像路徑、共享目錄路徑等參數(shù):sudo qemu-system-arm -M vexpress-a...。最后啟動中心控制系統(tǒng)QT 軟件,點擊“打開”按鈕成功拉取攝像頭實時監(jiān)控視頻,效果圖見圖4。

1684991180475087.png

3 結(jié)束語

對比傳統(tǒng)的需要購買硬件開發(fā)板的嵌入式軟件開發(fā)方法,本文基于QEMU 虛擬機搭建了一個嵌入式硬件Versatile Express 的系統(tǒng)仿真環(huán)境,在此環(huán)境下實現(xiàn)了嵌入式Linux 內(nèi)核、根文件系統(tǒng)的編譯移植,并設計實現(xiàn)了一款嵌入式視頻監(jiān)控系統(tǒng)應用程序,通過QT 中心控制系統(tǒng)實現(xiàn)了對目標平臺(視頻監(jiān)控系統(tǒng))的遠程訪問和視頻監(jiān)控,驗證了該方法的可行性和高效性,可作為高校學生或行業(yè)初學者的實驗平臺,用于嵌入式軟件的開發(fā)及教學工作。

參考文獻:

[1] 唐繼英.基于ARM的網(wǎng)絡顯示器硬件系統(tǒng)的設計[D].天津:河北工業(yè)大學,2005.

[2] 劉付金.基于QEMU的嵌入式通信加密系統(tǒng)設計與實現(xiàn)[D].西安:西安電子科技大學,2020.

[3] 汪夢云.BiToS視頻點播系統(tǒng)Peer端設計與實現(xiàn)[D].武漢:華中科技大學,2012.

(本文來源于《電子產(chǎn)品世界》雜志2023年5月期)



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉