色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Au1200無線車載視頻監(jiān)控的設(shè)計(jì)與實(shí)現(xiàn)

          基于Au1200無線車載視頻監(jiān)控的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2009-09-30 來源:網(wǎng)絡(luò) 收藏
          通過上述數(shù)據(jù)結(jié)構(gòu),可以有效地描述攝像頭設(shè)備的各種參數(shù)。其中,config_cmd是一個(gè)十六進(jìn)制的數(shù)組,對(duì)應(yīng)不同工作模式的攝像頭配置攝像頭寄存器。
          驅(qū)動(dòng)程序?yàn)樯蠈討?yīng)用提供了API接口,通過對(duì)應(yīng)file_operations數(shù)據(jù)結(jié)構(gòu)中的各個(gè)成員函數(shù)進(jìn)行系統(tǒng)調(diào)用,在上層程序中,利用函數(shù)調(diào)用,讀取驅(qū)動(dòng)中fileoperations的相應(yīng)成員函數(shù)指針,完成對(duì)應(yīng)函數(shù)功能。
          在系統(tǒng)的CIM接口的驅(qū)動(dòng)程序中做如下定義:

          本文引用地址:http://cafeforensic.com/article/152330.htm


          其成員函數(shù)分別完成了與 CIM接口相連攝像頭設(shè)備的打開、控制、讀寫、映射以及釋放等基本功能。例如通過ioctl操作對(duì)攝像頭進(jìn)行配置:


          (2)庫與協(xié)議棧部分
          為了支持上層應(yīng)用程序的運(yùn)行,軟件系統(tǒng)中還必須包含眾多與之相關(guān)的函數(shù)庫和協(xié)議棧。其中,主要包括了與系統(tǒng)運(yùn)行相關(guān)的基本函數(shù)庫,與音視頻編解碼相關(guān)的音視頻編碼庫,與用戶界面相關(guān)的Qtopia庫以及各種接口協(xié)議組成的協(xié)議棧。
          (3)應(yīng)用層部分
          的軟件流程圖如圖4所示。啟動(dòng)攝像頭后,將采集到的視頻數(shù)據(jù)映射到內(nèi)存中。通過輸出控制,選擇視頻數(shù)據(jù)的流向。其中,數(shù)據(jù)處理部分主要涉及與ffmpeg相關(guān)的視頻壓縮處理。

          (4)用戶控制部分
          系統(tǒng)采用Qtopia-core-opensource-4.2.2開發(fā)用戶界面。由于采用按鍵控制的方式,需要將按鍵驅(qū)動(dòng)程序添加到QT庫中。通過中斷的方式,可以捕獲按鍵信號(hào),并通過QT中的信號(hào)與槽的機(jī)制控制信號(hào)傳輸,使得當(dāng)每個(gè)按鈕被按下時(shí),觸發(fā)用戶程序中的某個(gè)函數(shù),并將相應(yīng)的信號(hào)量傳遞出去,從而對(duì)整個(gè)系統(tǒng)的控制。

          4 ffmpeg的軟壓縮方法
          ffmpeg是一個(gè)開源免費(fèi)的軟件,它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。使用ffmpeg軟壓縮的方式,不增加系統(tǒng)額外的硬件開銷,對(duì)采集到的視頻數(shù)據(jù)進(jìn)行實(shí)時(shí)壓縮。在視頻處理應(yīng)用程序的編寫過程中,需要按照ffmpeg定義的數(shù)據(jù)結(jié)構(gòu)來描述視頻數(shù)據(jù),調(diào)用ffmpeg中的各種庫函數(shù),將攝像頭采集到的視頻數(shù)據(jù)按照設(shè)定的格式進(jìn)行壓縮,并存成視頻文件,其處理流程如圖5所示。

          其中包括:
          (1)ffmpeg初始化:定義與視頻處理相關(guān)的數(shù)據(jù)結(jié)構(gòu)AVFormatContext,AVOutputFormat,AVStream,AVCodecContext,AVCodec,AVFrame,AVPicture等,并通過av_register_all(),av_alloc_format_context()等函數(shù)初始化相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
          (2)壓縮參數(shù)設(shè)置:主要涉及到視頻壓縮的相關(guān)參數(shù),如幀率、視頻分辨率、編碼類型等,通過av_set_parameters()函數(shù)進(jìn)行設(shè)置。
          (3)圖像格式轉(zhuǎn)換和視頻數(shù)據(jù)填充:按照要求,利用img_convert()等函數(shù)對(duì)圖像格式進(jìn)行轉(zhuǎn)換,并將轉(zhuǎn)換后的視頻數(shù)據(jù)通過avpicture_fill(),fill_yuv_image()等函數(shù)填充到AVPicture數(shù)據(jù)結(jié)構(gòu)中,以供編碼器使用。
          (4)ffmpeg視頻編碼:利用avcodec_encode_rid-eo(),av_rescale_q()等函數(shù),調(diào)用ffmpeg編碼庫進(jìn)行視頻編碼。
          (5)文件存儲(chǔ)操作:利用av_write_header(),av_write_frame(),av_write_trailer()等函數(shù)將壓縮后的視頻數(shù)據(jù)寫入指定文件中。
          (6)采集結(jié)束:采集結(jié)束后,利用avcodec_close(),av free()等函數(shù)釋放內(nèi)存資源,退出程序。
          ffmpeg提供功能豐富的音視頻函數(shù)庫,包括libav-codec,libavformat,libavdevice,libavfilter,libavutil和libswscale等,可為用戶提供許多音視頻處理相關(guān)的操作。系統(tǒng)應(yīng)用程序中調(diào)用到的ffmpeg相關(guān)函數(shù)主要依賴libavformat庫(支持所有的普通音視格式的解析器和產(chǎn)生器的庫)和libavcodec庫(具有高效、高可復(fù)用的音頻/視頻編解碼庫)。

          5 結(jié) 語
          本文介紹了,著重介紹了ffmpeg軟壓縮方法對(duì)視頻數(shù)據(jù)的壓縮和存儲(chǔ)的,在實(shí)際應(yīng)用中具有價(jià)值。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉