999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于嵌入式Linux的視頻循環錄制系統

2013-09-21 10:44:10林北洪鐘洪聲
單片機與嵌入式系統應用 2013年1期
關鍵詞:嵌入式信息系統

林北洪,鐘洪聲

(電子科技大學 電子工程學院,成都 611731)

引 言

視頻采集系統以其直觀的視頻影像數據,對現場場景進行記錄,目前已經在各行各業得到廣泛應用。對于特定運用場合,如汽車行進過程,由于其環境的不確定性和多樣性,以及事故的突發性和偶然性,要求采集系統能夠穩定、連續地實時記錄事發過程。行車過程事故發生時,需要掌握的事故原因往往在事故發生前短短的一段時間內。因此,分清事故責任和分析事故原因所需要的視頻信息,往往是在事故時間點之前的一小段時間內[1]。

日常生活中常見的交通糾紛,往往是因為沒有直接證據造成取證困難。基于此,結合嵌入式系統低功耗、低成本等優點,本文利用嵌入式Linux系統實現行車視頻存儲,存儲的視頻可以為交通糾紛的調解以及交通事故認定,提供現場錄像證據。

1 系統概述

1.1 系統硬件結構

系統硬件結構如圖1所示。主控制芯片為三星的ARM9芯片S3C2440,它內部含有 MMC/SD/SDIO控制器、NAND Flash控制器、USB主控制器、存儲器控制器、時鐘和電源管理等模塊[2]。其中,存儲器控制器為訪問外部存儲提供必要的存儲控器控制信號;NAND Flash控制器為外掛的NAND Flash存儲器提供控制信號,而NAND Flash控制器由于其價格經濟,用于執行引導程序;時鐘和電源管理模塊由時鐘控制、USB控制和電源控制3部分模塊組成,時鐘控制模塊用于產生必要的時鐘信號,電源管理模塊用于提供電源管理方案,保證對給定任務的最佳功耗;USB主控制器支持2個端口的USB主機接口,支持低速及全速USB設備,在本系統中用于連接USB攝像頭;MMC/SD/SDIO控制器為外接SD卡提供控制和數據信號,使視頻數據的存儲變得可能。

圖1 系統總體框圖

1.2 系統原理

NAND Flash大小為256MB,用于存儲文件系統,執行必要的引導程序。SDRAM為64MB內存。考慮行車過程的震動環境,視頻存儲設備采用能夠牢靠固定的SD卡。除了穩固的優點外,SD卡還有價格便宜、方便拔插的優點。要實現行車視頻的錄制存儲,首先需要采集視頻數據。考慮到嵌入式存儲器的資源相對有限,本設計使用中星微電子公司ZC301芯片的攝像頭,此類攝像頭的視頻數據經過攝像頭內部專用DSP芯片處理過,輸出的信號是JPEG格式的。移植Linux系統后,利用Linux下視頻采集和輸出驅動的內核接口V4L2對視頻進行采集,然后對采集到的視頻數據按照avi標準格式進行封裝,添加必要的幀頭信息后,將其一幀一幀存入插在SD卡座上的SD卡內,采用特定方法對視頻文件進行管理,實現視頻的循環存儲,以節約存儲空間。將采集存儲到SD卡的視頻文件拷貝到任意的帶視頻播放器的平臺上,即可查看錄制的視頻信息。

由于ZC301攝像頭輸出的每幀是JPEG格式數據,因而存儲的avi視頻文件是MJPEG壓縮,其中,每一幀圖像都分別使用JPEG編碼。MJPEG視頻壓縮僅采用幀內壓縮,不需要過多的運算能力,無需為視頻壓縮浪費大量的計算效率,適合用于嵌入式設備中。雖然其壓縮率不是很高,造成視頻文件尺寸較大,但是由于該行車視頻錄制系統只需保存事故發生前一段時間內的現場視頻,綜合考慮MJPEG壓縮可以滿足要求。

2 嵌入式環境搭建[3]

要在嵌入式平臺實現系統功能,需要通過主機構建基本的軟件系統,并燒寫到設備中。采用交叉開發模式以適應嵌入式設備的資源不足。首先,在主機編譯Bootloader,將編譯出的鏡像文件燒入設備;然后在主機編譯嵌入式Linux內核,通過Bootloader燒入板子;最后,在主機上編譯實現相關功能的應用程序,通過NFS運行,經過驗證成功后再燒入板子,過程如圖2所示。該部分內容不作詳細闡述,具體的搭建過程可參考相應的資料。

圖2 開發環境搭建

3 軟件設計

系統的軟件設計主要包括視頻圖像的采集、使用特定方法實現視頻數據的循環存儲,其中重點在于,按照avi格式將采集的數據進行封裝,并且實現視頻文件循環存儲。

3.1 avi文件格式[4]

avi(audio video interleaved)格式即音頻視頻交錯格式,1992年由 Microsoft公司推出。所謂“音頻視頻交錯”,就是可以將視頻格式和音頻格式交織在一起進行同步播放。

RIFF文件使用4字符碼FOURCC(Four-Character Code)來表示數據類型,例如“RIFF”表示這是一個RIFF文件,“AVI”表示文件的具體類型,“LIST”表示用列表的形式來組織數據。其結構如圖3所示。作為一種多媒體文件的存儲方式,不同編碼的音頻、視頻文件,都可以按照RIFF定義的存儲規則保存、記錄各自不同的數據,如數據內容、采集信息、顯示尺寸、編碼方式等。播放器播放這些文件時,會根據RIFF的規則分析文件,正確解析出音視頻信息進行播放。

圖3 RIFF文件結構

圖4 avi文件格式

avi文件是目前使用的最復雜的RIFF文件,它包含信息塊、數據塊和索引塊3個子塊,每個子塊都按照RIFF文件結構來填充各字段。其總體結構如圖4所示。

avi文件有兩種基本的數據結構CHUNK和LIST,其形式如圖5所示。

圖5 CHUNK塊和LIST塊的結構

其中,信息塊是一個以“hdrl”為標識的LIST塊,定義avi文件的數據格式;數據塊是一個以“movi”為標識的LIST塊,它保存真正的音視頻數據;索引塊是一個以“idxl”為標識的LIST塊,為avi文件中的媒體數據塊進行索引,不是必需的。詳細的avi文件格式見參考文獻[5]。

3.2 視頻采集[6]

嵌入式Linux下視頻采集的實現使用Linux視頻驅動接口V4L2。它的操作流程如下:打開視頻設備、設置視頻設備屬性和采集方式、處理視頻數據、關閉視頻設備。把視頻設備當作普通文件來打開關閉,并進行數據的讀寫。視頻設備屬性的設置是通過ioctl函數來進行的,V4L2驅動接口包含很多控制命令,對視頻采集進行控制。

3.3 視頻循環錄制的實現

視頻的循環存儲是很有必要的。一方面,因本系統特點,對于事故前很長時間的視頻信息沒有保存下來的必要,因而可以在保存必要視頻信息的前提下,當SD卡存儲滿的時候對最先錄制的視頻進行覆蓋,以充分利用存儲空間。

循環錄制可以只在單個文件中進行,參考文獻[1]采用此方法。該方法通過修改位置指針,對存儲幀數和預定義的最大幀常量進行判斷,以實現循環存儲。該方法實現較為繁瑣,而且由于采用avi文件存儲,其單個文件最大只有2G,保存的視頻數據有限。本系統采用多個文件循環存儲的方法。每次錄制以開始錄制的時間作為avi的文件名,格式為“年月日-時分秒”形式,這樣便于以后查閱檢索。

3.3.1 循環存儲原理

循環存儲的原理簡單直觀,首先創建一個avi文件對視頻數據進行錄制,當錄制到文件預定義大小時,新建一個avi文件繼續存儲。如此一直下去,直到SD卡存儲已滿。當系統檢測到SD卡剩余容量小于預定義的閾值時,則查找最先錄制的avi文件并刪除,這樣便有空閑容量繼續存儲視頻,如此往復便可實現視頻的循環錄制。

3.3.2 循環存儲方法

根據上面的循環存儲原理,按照avi視頻循環存儲流程可以清楚地實現循環存儲,如圖6所示。

系統初始化主要是對視頻采集的初始化,設定采集視頻的相關信息,通過init_videoIn()函數將參數傳入相應的結構體,主要代碼如下:

接著創建一個avi文件,以當前日期加時間作為文件名,這樣便于將來對視頻文件查詢檢索。然后就進入程序大循環,對SD卡剩余容量判斷,可以保證即使更換不同容量的SD卡也能充分利用存儲空間。對于SD卡剩余容量小于預定義的RESTSIZE情況,則說明SD卡剩余容量不足,這樣就需要刪除最早保存的視頻文件。為了獲取SD卡目錄里的文件信息,使用了dirent結構體,查找SD卡里最早保存的avi文件是關鍵,其核心代碼如下:

圖6 avi視頻循環存儲流程

找到最早創建的avi文件后,刪除它即獲得足夠的容量保存新的視頻。對于SD卡剩余容量足夠的情況,直接往avi文件寫入一幀視頻,這也是本設計的一個重點,在下一節介紹。若寫入視頻數據失敗,直接跳出大循環,系統結束工作。否則,使用stat()函數對當前視頻文件大小進行判斷,看該avi文件是否達到預定大小。若是,則要新建一個avi文件以保證SD卡的每個avi文件大小固定且存儲多個avi文件;不是,則avi文件還未達到預定大小,繼續往avi文件寫入一幀視頻數據。如此往復,即實現視頻的循環存儲功能。

3.3.3 寫一幀avi視頻數據

向SD卡中創建的avi文件寫入一幀視頻,就是按照3.1節介紹的avi文件的格式,把從攝像頭采集到的一幀圖像保存到相應位置,同時填寫必要的avi文件頭信息。

打開以日期時間命名的avi文件后,設置視頻相關信息,主要是視頻壓縮方式、視頻幀大小和幀率等,然后便是填充avi文件的頭信息。avi文件的頭信息是其區別于其他視頻文件一個重要標志,根據參考文獻[5],頭部信息主要包括2個LIST基本結構,第一個“hdrl”LIST嵌套一個“strl”LIST,其中“hdrl”是主avi信息頭數據,“strl”LIST是流的頭信息數據(strl可以有多個,對應多個流),它們用于保存視頻流的詳細信息。每個“strl”至少包含一個“strh”塊(用于說明該流的頭信息)和一個“strf”塊(說明該流是視頻流還是音頻流)。第二個LIST是“movi”列表,它用來保存真正的視頻音頻流數據,它以4字符碼“00db”(非壓縮視頻流)或“00wb”(非壓縮音頻流)等開始作為標記,接下來存儲流數據。“movi”列表后是avi文件的索引塊,這部分是可選的,主要是為avi文件每個數據塊進行索引。填寫完avi文件頭部信息后,即可將采集的視頻數據保存下來。

寫一幀視頻數據時,首先將寫指針指向avi文件頭的尾部,接著調用一個 write_avi_data(avi_t*AVI,char*data,unsigned long length)函數,將length長度的由指針data指向的數據寫入到avi指向的文件。在寫真正的流媒體數據之前,先寫入4字符碼“00db”指示要寫的是視頻數據,然后是要寫入的一幀數據的長度字段,最后寫入一幀視頻數據。

一個avi文件只有一個頭部信息,即填充完avi文件頭部信息后,便不斷地向文件寫入一幀視頻數據,直到文件大小達到預定大小時,按照循環存儲規則新建avi文件。

4 系統功能測試

用 Linux C[7-8]實現了視頻采集功能、循環存儲功能,將交叉編譯成功后的應用程序下載到板子的根文件系統。自動掛載SD卡后執行應用程序,功能實現正常,連續長時間運行能夠實現視頻的循環錄制。取下SD卡,把視頻復制到計算機上使用視頻播放器播放,視頻清晰流暢。

結 語

本文用嵌入式Linux實現了行車視頻錄制的功能。詳細介紹了視頻循環存儲的實現和視頻文件的保存。作為獨立的功能部件,本系統可以方便地安裝到汽車上。經過軟硬件聯合測試,系統工作穩定可靠,有一定的實用價值。

[1] 劉少剛,王學軍.基于嵌入式Linux系統的單個AVI文件視頻循環錄制的研究[J].林業機械與木工設備,2008(8):48-51.

[2] Samsung Electronics.S3C2440 32-Bit Microcontroller User's Manual,2004.

[3] 韋東山,嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2009.

[4] 陸其明.DirectShow實務精選[M].北京:科學出版社,2004.

[5] AVI File Format.[2012-08].http://ishare.games.sina.com.cn/f/6723744.html?from=like.

[6] Michael H Schimek.Video for Linux Two API Specification Revision 0.24,2008.

[7] 楊宗德,鄧玉春.Linux高級程序設計[M].北京:人民郵電出版社,2009.

[8] 史蒂文斯,拉戈.UNIX環境高級編程[M].尤晉元,等譯.北京:人民郵電出版社,2006.

猜你喜歡
嵌入式信息系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
Altera加入嵌入式視覺聯盟
倍福 CX8091嵌入式控制器
自動化博覽(2014年4期)2014-02-28 22:31:15
主站蜘蛛池模板: 久久综合久久鬼| 青青草原国产一区二区| 成人va亚洲va欧美天堂| 国产美女91视频| 91精品国产91欠久久久久| 国产欧美精品专区一区二区| 亚洲香蕉伊综合在人在线| 精品国产美女福到在线直播| 久久中文无码精品| 色噜噜中文网| 欧美精品1区| 东京热高清无码精品| 亚洲清纯自偷自拍另类专区| 熟女视频91| 青青久在线视频免费观看| m男亚洲一区中文字幕| 污污网站在线观看| 亚洲第一在线播放| 亚洲日韩精品伊甸| 国产精品一区二区无码免费看片| 亚洲欧美成人| 亚洲人成网7777777国产| 97无码免费人妻超级碰碰碰| 国产高清无码麻豆精品| 精品欧美一区二区三区久久久| 99re免费视频| 国产白浆在线| 久久香蕉国产线看观看精品蕉| 91蝌蚪视频在线观看| 国产美女一级毛片| 亚洲日本中文字幕天堂网| 亚洲av无码成人专区| 免费高清毛片| 国产精品午夜福利麻豆| 精品久久蜜桃| 国产电话自拍伊人| 国产在线精品美女观看| 亚洲永久视频| 欧美第九页| 九色在线视频导航91| 国产精品午夜电影| 国产成人精品第一区二区| 免费一看一级毛片| 熟女日韩精品2区| 最新亚洲人成网站在线观看| 国产成人AV综合久久| 国产成人高清亚洲一区久久| 国产美女无遮挡免费视频| 亚洲第七页| 久久伊伊香蕉综合精品| www.亚洲国产| 亚洲欧美成人在线视频| 亚洲色婷婷一区二区| 精品伊人久久久香线蕉 | 思思热在线视频精品| 成人在线欧美| 国产精品久久久久久影院| 国产主播福利在线观看| 一级毛片免费观看不卡视频| 日本人妻丰满熟妇区| 狠狠色综合网| 凹凸精品免费精品视频| 日韩中文精品亚洲第三区| 国产美女在线观看| 亚洲香蕉在线| 91无码人妻精品一区二区蜜桃| 伊人无码视屏| 91小视频在线观看免费版高清| 亚洲永久视频| 日韩小视频网站hq| 国产一级视频在线观看网站| 欧美a级在线| 国产成人精品高清不卡在线| 日本精品一在线观看视频| 青青草一区二区免费精品| 日韩精品毛片| 亚洲啪啪网| 国产精品亚欧美一区二区| 亚洲精品免费网站| 激情综合网激情综合| 欧美精品影院| 欧美啪啪网|