www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于S3C6410的視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

摘要:為了實現(xiàn)一種簡單,可靠性高的嵌入式視頻監(jiān)控系統(tǒng),基于三星S3C6410微處理器系統(tǒng),結(jié)合嵌入式技術(shù)和圖像處理技術(shù),利用S3C64 10的硬件編碼模塊MFC進行MPEG-4編碼,采用實時傳輸協(xié)議通過網(wǎng)絡(luò)進行視頻傳輸。經(jīng)局域網(wǎng)條件下測試,該系統(tǒng)采集傳輸視頻質(zhì)量較好,性能穩(wěn)定,滿足低成本、高可靠性的嵌入式視頻監(jiān)控要求。在描述系統(tǒng)框架的同時,更具體地說明了實現(xiàn)部分的關(guān)鍵代碼示例。
關(guān)鍵詞:視頻監(jiān)控;S3C6410;MPEG-4;實時傳輸協(xié)議

    視頻監(jiān)控的應(yīng)用領(lǐng)域日益廣泛。隨著電子信息技術(shù)、多媒體技術(shù)以及網(wǎng)絡(luò)技術(shù)的快速發(fā)展,嵌入式視頻監(jiān)控技術(shù)也得到了快速的發(fā)展。相比較傳統(tǒng)的監(jiān)控系統(tǒng),嵌入式監(jiān)控系統(tǒng)具有成本低,小巧靈活,高可靠性等特點。本文以三星S3C6410微處理器為基礎(chǔ)處理器ARM11,實現(xiàn)了一種簡單高效的視頻監(jiān)控系統(tǒng)。系統(tǒng)既可以使用網(wǎng)線進行傳輸,也可以采用無線USB網(wǎng)卡進行無線傳輸。本文在說明系統(tǒng)框架的同時,著重對系統(tǒng)實現(xiàn)的具體軟件進行了說明。

1 系統(tǒng)的組成和工作原理
    嵌入式視頻監(jiān)控系統(tǒng)由硬件部分和軟件部分組成。硬件部分由視頻采集模塊、視頻編碼模塊、網(wǎng)絡(luò)傳輸模塊以及嵌入式處理器模塊組成;軟件部分基于嵌入式操作系統(tǒng)平臺,包括視頻數(shù)據(jù)采集模塊、視頻編碼模塊和網(wǎng)絡(luò)傳輸模塊等。
    系統(tǒng)的總體設(shè)計原理為:通過OV9653的130萬像素攝像頭采集視頻數(shù)據(jù),然后將視頻數(shù)據(jù)發(fā)送到S3C6410的MFC(多媒體格式編解碼)模塊進行視頻編碼后,得到MPEG-4視頻流,最后將數(shù)據(jù)通過網(wǎng)絡(luò)模塊發(fā)送到接收端。系統(tǒng)組成框圖如圖1所示。



2 系統(tǒng)的硬件設(shè)計
2.1 數(shù)據(jù)采集模塊
    視頻采集模塊采用OV9653攝像頭傳感器。OV9653攝像頭傳感器是低電壓的CMOS圖像傳感器。采集圖像的輸出格式可以是YUV/YCbCr
4:2:2或者RGB 4:2:2。
2.2 視頻編碼模塊
    系統(tǒng)基于ARMSYS6410開發(fā)板開發(fā)。ARMSYS6410開發(fā)板以三星S3C6410微處理器(ARM1176JZF-S內(nèi)核)為核心。
    利用S3C6410提供的MFC(多媒體格式編解碼)模塊進行編碼,將OV9653采集到的YUV格式數(shù)據(jù)編碼成MPEG-4格式數(shù)據(jù)流。同時,也可以將OV9653采集的RGB格式的數(shù)據(jù)直接顯示在LCD屏上。
2.3 網(wǎng)絡(luò)傳輸模塊
    基于S3C6410微處理器的ARMSYS6410開發(fā)板提供了1路10M/100M網(wǎng)絡(luò)接口,1路USB2.0-OTG,1路USB Host。在網(wǎng)絡(luò)傳輸模塊中可以直接使用網(wǎng)絡(luò)接口來進行有線的網(wǎng)絡(luò)數(shù)據(jù)傳輸,也可以使用USB接口的網(wǎng)絡(luò)卡來進行無線的數(shù)據(jù)傳輸。區(qū)別只是在軟件部分使用的驅(qū)動不同,而對程序的結(jié)構(gòu)沒有任何影響。
2.4 嵌入式處理器模塊
    三星S3C6410微處理器(ARM1176JZF-S內(nèi)核)是一款高性能的多媒體應(yīng)用處理器,具有強大的硬件多媒體格式編解碼單元(MFC),完善的外部設(shè)備,同時擁有高達667 MHz的運行頻率。[!--empirenews.page--]

3 系統(tǒng)的軟件設(shè)計
    嵌入式操作系統(tǒng)是嵌入式系統(tǒng)的重要組成部分,為應(yīng)用程序的開發(fā)提供了一個軟件平臺。由于Linux系統(tǒng)具有良好的可裁剪和可移植等特性,目前較多地采用Linux系統(tǒng)來進行嵌入式系統(tǒng)的開發(fā)。
    基于S3C6410的ARMSYS6410開發(fā)板,已經(jīng)提供了基于Linux 2.6.28內(nèi)核的操作系統(tǒng)源碼。通過對內(nèi)核各個功能模塊進行裁剪,編譯出鏡像文件,然后下載到開發(fā)板上,即可實現(xiàn)Linux嵌入式操作系統(tǒng)以及相應(yīng)的驅(qū)動程序的移植。
    系統(tǒng)的整體數(shù)據(jù)流如圖2所示。圖中①表示原始數(shù)據(jù)從外部攝像頭到攝像頭驅(qū)動模塊。②表示數(shù)據(jù)由驅(qū)動模塊經(jīng)過處理傳輸?shù)絻?nèi)存。此時數(shù)據(jù)可以有不同的格式。③表示數(shù)據(jù)從內(nèi)存中傳送給視頻編碼模塊的輸入緩沖區(qū)。④表示MFC編碼模塊從輸入緩沖區(qū)讀取數(shù)據(jù)進行MPEG-4編碼。⑤表示編碼結(jié)束后將數(shù)據(jù)傳送到視頻編碼模塊的輸出緩沖區(qū)。⑥表示從視頻編碼的輸出緩沖區(qū)讀取編碼后的數(shù)據(jù)傳送給網(wǎng)絡(luò)傳輸模塊進行傳輸。


    在此需要注意的是,圖示中的視頻輸入緩沖區(qū)對于解碼模塊是輸入緩沖區(qū),但是對于編碼模塊卻是輸出緩沖區(qū)。對于圖示中的輸出緩沖區(qū)也同樣如此。[!--empirenews.page--]
3.1 視頻數(shù)據(jù)采集程序
    視頻采集程序使用內(nèi)存映射的方式進行讀取。通過內(nèi)存映射直接把設(shè)備文件映射到內(nèi)存中,繞過內(nèi)核緩沖區(qū),進程訪問設(shè)備文件時和訪問普通內(nèi)存一樣,極大的提高了視頻數(shù)據(jù)的讀取速度。
    視頻采集部分的流程圖如圖3所示。
    下面列出視頻采集部分的關(guān)鍵代碼。
    首先打開設(shè)備,其中CODEC_NODE為預(yù)定義宏,表示攝像頭結(jié)點文件路徑。
    dev_fp=open(CODEC_NODE,O_RDWR);
    在設(shè)置參數(shù)部分,首先要得到設(shè)備能力參數(shù),檢查是否具有所需的功能,然后再進行參數(shù)的設(shè)置。使用下面的代碼來實現(xiàn)。
    ioctl(dev_fp,VIDIOC_QUERYCAP,&cap);
    上一行代碼得到設(shè)備的功能信息,存儲到參數(shù)caF中。在檢查設(shè)備具有所需功能后,下一行代碼進行參數(shù)設(shè)置。
    ioctl(dev_fp,VIE)IOC_S_FMT,&codec_fmt);
    其中,codec_fmt為一個格式信息的結(jié)構(gòu)體類型參數(shù)。
    在Linux平臺,采集圖像數(shù)據(jù)部分的實現(xiàn)方式與文件讀取類似,采用下面的代碼實現(xiàn)。
    read(dev_fp,g_yuv,YUV_FR_BUF_SIZE);
    而將數(shù)據(jù)傳送給MFC模塊這部分,可以采取直接共享緩沖區(qū)的方式,這樣減少了一次數(shù)據(jù)在內(nèi)存中的傳輸,增加了效率。
    最后是關(guān)閉設(shè)備文件。先停止圖像的采集,然后關(guān)閉文件。
    ioctl(dev_fp,VIDIOC_STREAMOFF,&start);
    close(dev_fp);
    上述代碼片段是視頻采集部分的關(guān)鍵代碼段。在實現(xiàn)部分還有很多的條件判斷和分支選擇等控制流程部分,這里不進行詳細描述。
3.2 視頻編碼程序
    視頻編碼部分直接采用S3C6410的MFC視頻編解碼模塊進行視頻的編碼。由于采用硬件編碼,編碼效率非常高。同時在程序的設(shè)計方面,不用涉及具體的硬件細節(jié),只需要通過S3C6410提供的驅(qū)動模塊進行。編碼部分的流程圖如圖4所示。

[!--empirenews.page--]
    下面列出視頻編碼部分的關(guān)鍵代碼。
    hOpen=open(MFC_DEV_NAME,O_RDWR | O_NDELAY);
    上一行代碼打開MFC設(shè)備。由預(yù)定義的宏MFC_DEV_NAME指定MFC設(shè)備文件路徑。
    模塊的初始化部分需要指定編碼幀的長寬,編碼幀的速率等參數(shù)。初始化的這些信息并沒有直接應(yīng)用于設(shè)備,而是存儲于一個編碼參數(shù)的結(jié)構(gòu)體類型參數(shù)pCTX中,然后用下面的代碼進行參數(shù)設(shè)置,也即將參數(shù)應(yīng)用于實際的設(shè)備。
    ioctl(pCTX->hOpen,cmd_init,&mfc_args);
    編碼部分用下一行代碼實現(xiàn)。
    ioetl(pCTX->hOpen,cmd_exe,&mfc_args);
    在編碼完成后,可以通過函數(shù)獲取編碼后視頻幀的內(nèi)存地址。函數(shù)原型為:
    void*SsbSipMPEG4EncodeGetOutBuf(vold*openHandle,long*size)。
    最后關(guān)閉設(shè)備文件。
    close(pCTX->hOpen);
    同樣,對于一些流程控制部分的代碼,限于篇幅,沒有進行詳細的描述。
3.3 網(wǎng)絡(luò)傳輸程序
    網(wǎng)絡(luò)部分采用RTP實時傳輸協(xié)議進行視頻數(shù)據(jù)的傳輸。RTP(Real-time Transport Protocol)是用于網(wǎng)絡(luò)多媒體數(shù)據(jù)流的一種傳輸協(xié)議。為了使系統(tǒng)的實現(xiàn)更簡單和穩(wěn)定,采用已有的RTP庫進行程序的開發(fā)。本系統(tǒng)選用開源的C語言庫oRTP進行開發(fā)。
    oRTP庫是對RTP協(xié)議的一種實現(xiàn),完全采用C語言編寫。oRTP庫使用簡單易用的接口,實現(xiàn)了RTP協(xié)議,可以工作于Linux,Windows等多個
平臺。
    系統(tǒng)網(wǎng)絡(luò)傳輸模塊的流程比較簡單。模塊首先初始化oRTP庫,然后傳輸數(shù)據(jù),在傳輸完成后釋放oRTP庫資源。由于模塊流程較簡單,在此就不列出系統(tǒng)的流程圖,僅針對具體的實現(xiàn)進行說明。下面列出網(wǎng)絡(luò)傳輸模塊的關(guān)鍵代碼。在傳輸數(shù)據(jù)之前,要對oRTP庫進行一些基本的初始化操作。首先對時間戳進行初始化,采用下面的一行代碼實現(xiàn)。
    m_nUser-Timestamp=0;
    然后,調(diào)用oRTP庫提供的初始化接口函數(shù):
    ortp_init();
    ortp_scheduler_init();
    在完成基本的初始化后,創(chuàng)建一個新的rtp會話對象,并且設(shè)置會話對象的一些參數(shù)和屬性。
    session=rtp_session_new(RTP_SESSION_SENDONLY);
    上面的代碼創(chuàng)建了一個新的rtp會話對象,接下來用下面的函數(shù)對session進行參數(shù)和屬性的設(shè)置。
    rtp_session_set_scheduling_mode(); rtp_session_set_blocking_mode(); rtp_session_set_remote_addr();rtp_session_set _payload_type();
    上面的函數(shù)依次對rtp會話對象的調(diào)度管理、阻塞模式、發(fā)送目的地址和負載類型進行設(shè)置。限于篇幅,略去了調(diào)用參數(shù)。
    發(fā)送數(shù)據(jù)調(diào)用庫函數(shù):
    rtp_session_send_wlth_ts();
    在發(fā)送數(shù)據(jù)完成后,銷毀rtp會話對象,然后釋放oRTP庫的資源。
    rtp_session_destroy(session);
    ortp_exit();
    在網(wǎng)絡(luò)傳輸模塊中需要注意的是,由于RTP協(xié)議對數(shù)據(jù)包的大小是有限制的,所以如果傳輸?shù)囊曨l幀過大,需要進行分包傳輸處理。

4 結(jié)語
    本文在基于S3C6410微處理器的開發(fā)平臺上,實現(xiàn)了一種基于MPEG-4編碼的視頻監(jiān)控系統(tǒng)。利用S3C6410內(nèi)部集成的MFC模塊進行視頻編碼,實現(xiàn)了很高的編碼效率。最后,通過RTP協(xié)議進行網(wǎng)絡(luò)數(shù)據(jù)傳輸。采用模塊化的設(shè)計之后,使得系統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)傳輸部分與具體的有線或者無線傳輸方式無關(guān)。文章在描述各部分實現(xiàn)流程的基礎(chǔ)上,詳細地說明了關(guān)鍵部分的代碼實現(xiàn)。實驗測試中,數(shù)據(jù)編碼效率很高。采用了
MPEG-4編碼方式,在正常網(wǎng)絡(luò)情況下,傳輸視頻質(zhì)量較好,系統(tǒng)運行穩(wěn)定。實驗證實了系統(tǒng)的可行性較高。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉