新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM Linux的3G無線車載視頻監控系統

        基于ARM Linux的3G無線車載視頻監控系統

        作者: 時間:2013-03-05 來源:網絡 收藏

        主要過程如下:
        (1)打開視頻設備。調用函數int open(constchar * pathname,int flags),若返回值為-1,表示打開失敗,否則,表示所打開設備的文件描述符。
        (2)讀取設備信息。Ioctl(cam_fp,VIDIOC_QUERYCAP,cap)函數來取得設備文件的屬性參數并存儲存于cap結構中,其中cam_fp指的是打開的視頻設備文件描述符。
        (3)選擇視頻的輸入方式。通過ioetl(cam_fp,VIDIOC_S_INPUT,chan)函數設置視頻設備的輸入方式,其中chan的數據結構類型是V4L2 _input,用來指定視頻的輸入方式。
        (4)設置視頻幀的格式。通過ioctl(cam_fp,VIDIOC_S_FMT,fmt)函數設置視頻的幀格式,其中fmt的數據結構類型是V4L2_format,用來指定視頻的寬度、高度、像素大小等。
        (5)讀取視頻數據。通過read(cam_fp,g_yuv,YUV_SIZE)函數,把攝像頭一幀的數據存放到g_yuv中,其中YUV_SIZE指的是每幀數據的大小。
        (6)關閉視頻設備。通過close(cam_fp)函數來實現視頻設備的關閉。根據流程圖可對其進行相應操作。當攝像頭通過USB接口連接后,程序中調用V4L API對設備文件的讀操作read(),即可完成視頻數據采集到內存中,視頻數據可用圖4形式保存,也可壓縮后封裝進數據包。本文是先將采集數據進行壓縮后再封裝進數據包,并傳輸到監控PC進行處理。
        3.2.3 視頻壓縮模塊設計
        因視頻采集模塊采集的視頻數據信息量非常大,為了提高數據傳輸速度、降低網絡數據流量、保證監控的實時性,有必要對車載攝像頭采集的數據壓縮編碼。文中采用硬編碼方式(硬編碼具有不占用CPU資源,運算速度快等優點,從而滿足視頻數據實時性的要求)將攝像頭采集的圖像系列壓縮編碼成流媒體。具體編碼的過程如圖5所示。

        本文引用地址:http://www.104case.com/article/148087.htm

        e.JPG


        (1)創建編碼結構。調用SsbSipH264Encodehlit(width,height,frame_rate,bitrate,gop_num)函數實現,其中width表示圖像的寬度,height表示圖像的高度,frame_rate表示幀頻,bitrate表示比特率或碼率,gop_num表示兩個相離關鍵幀之間最多包含多少個幀(B或P幀)。
        (2)初始化H.264編碼結構,調用SsbSipH264Encode Exe(handle)函數。
        (3) 獲取視頻輸入地址,調用SsbSipH264EncodeGetInBuf(handle,0)函數來實現,該函數返回視頻輸入的首地址,存放在p_inbuf中。
        (4)輸入視頻數據,調用memcpy(p_inbuf,yuv_bur,frame_size)函數實現,p_inbuf存放需要編碼的數據,yuv_buf存放原始視頻數據,frame_size表示數據的大小。
        (5)編碼視頻數據,對p_inbuf內容進行H.264編碼,調用SsbSipH264EncodeExe(handle)函數實現。
        (6) 輸出已編碼的數據,調用 SsbSipH264EncodeGetOutBuf(handle,size),該函數返回已編碼圖像的首地址,size表示已編碼圖像的大小。
        (7)關閉硬編碼設備,調用SsbsipH264Encode DeInit(handle)函數實現的。
        3.2.4 嵌入式服務器boa移植
        Linux支持boa、HTTPD、THTTPD等幾種Web服務器,其中boa Web服務器更適合于嵌入式系統,因為它是一個單任務、支持CGI(Common Gateway Interface,通用網關接口)功能的Web服務器,只能依次完成用戶的請求,而不會fork出新的進程來處理并發出連接請求,可執行代碼只有約60K。
        首先進入boa源碼目錄的src子目錄,執行命令./con-figure生成Maketile文件,然后修改Makefile文件找到CC=gcc,將其改成CC=arm-linux-gcc,再將CPP=gcc-E改成CPP=arm-linux-gcc-E,并保存退出。然后運行make進行編譯,得到的可執行程序為boa,之后執行命令arm-linux-strip boa,將調試信息去掉,得到的最終程序。第二步完成boa的配置,使其能夠支持CGI程序的執行。Boa需要在/etc目錄下建立一個boa目錄,里面放入boa的主要配置文件boa.conf,主要文件的含義有:AccessLog/var/log/boa/access_log訪問日志文件。如果沒有以/開始,則表示從服務器的根路徑開始;VerboseCGILogs是否記錄CGI運行信息,如果沒有注釋掉,則記錄,注釋掉則不記錄;Document Root/var/wwwHTML文檔的主目錄,如果沒有以/開始,則表示從服務器的根路徑開始;DirectoryMaker/usr/lib/boa/boa_indexer當HTML目錄沒有索引文件時,用戶只指明訪問目錄時,boa會調用該程序生索引文件給用戶,因為該過程比較慢最好不執行,可以注釋掉;Scri ptAlia/cgi-bin//var/www/cgi-bin/指明CGI腳本的虛擬路徑對應的實際路徑。一般所有的CGI腳本都要放在實際路徑里,用戶訪問執行時輸入站點+虛擬路徑+CGI腳本名。對boa.conf進行修改的必須要保證是使其他的輔助文件和設置必須和boa.conf里的配置相符,不然boa就不能正常工作。另外還需要創建日志文件所在目錄/var/log/boa,創建HTML文檔的主目錄/var/www,將mime.types文件拷貝到/etc目錄,創建CGI肢本所在目錄/var/www/cgi-bin/。
        3.2.5 CGI程序的設計
        CGI提供了一個Web服務器的外部程序通道,運行在服務器上,由瀏覽器輸入觸發,是Web服務器和系統中其他程序的連接通道。CGI程序就是符合這種接口的程序。服務器接收到用戶的請求,并將數據送給CGI程序。CGI程序接收到數據后,啟動編寫好的應用程序,并按照用戶提供的數據執行。應用程序執行完成后,返回執行結果,并通過Web服務器傳送給用戶瀏覽器顯不。
        CGI模塊程序的設計主要包括如下幾部分:Web服務器的配置、HTML頁面的編寫、CGI腳本實現。
        (1)Web服務器的配置
        嵌入式Web服務器采用boa,其配置是以文本的形式提供,放在文件系統中的/etc/httpd/conf/目錄下面,其主要配置在以上的boa服務器移植中講述過了。
        (2)HTML頁面的編寫
        因為系統的設計的主要方向是能夠通過USB攝像頭進行實時監控。所以為了實現簡單化,拋開一些不必要復雜的選擇項。主要的HTML頁面有登錄界面、注冊界面和監控界面。這些HTML放在嵌入式文件系統的/var/www目錄下。
        (3)CGI腳本實現
        實現動態Web頁面的第二步是用C編寫CGI程序,CGI程序分為以下幾部分:根據POST方法或GET方法從提交的表單中接收數據;URL編碼的解碼;用printf()函數來產生HTML源代碼,并將經過解碼后的數據正確地返回給瀏覽器。
        3.2.6 遠程視頻數據接收模塊設計
        目前流行的瀏覽器有IE、FireFox、Chrome等,對于普通的文本及HTML文件支持的GIF、JPEG等格式的圖片都可以輕松的顯示,但對于實時視頻數據,這些普通瀏覽器無法正常的顯示。所以實時視頻數據接收模塊主要完成的工作是視頻數據的接收、報文的解封裝、發送RTcP反饋信息、H.264視頻解碼和Web瀏覽器的顯示。
        本系統采用ActiveX控件技術,嵌入在Web頁面中,來完成視頻數據的接收、協議、解碼和最后的顯示工作。最重要的一點,系統采用雙緩沖技術,來滿足視頻的解碼速度的問題,實現實時播放。具體流程圖如圖6所示。

        f.JPG



        4 系統的測試與結論
        本文設計了一種基于ARM S3C2440的嵌入式系統,首先通過USB采集中星微攝像頭作為服務器,實現利用V4L2技術對USB攝像頭進行數據采集,并將數據送入H.264編碼模塊進行數據的壓縮,壓縮后的數據經過視頻服務器封裝打包,最后通過嵌入式Web服務器與遠程客戶端進行交互。本系統在實際的運營網絡中進行了測試,目標定位信息接收速率為1次/s,動態定位精度小于等于10 m;能實現動態視頻傳輸,且視頻傳輸流暢,圖像最大分辨率可達VGA(640×480像素),視頻傳輸的質量優于基于2.5G網絡的車輛監控系統(圖像最大的分辨率為320×240像素,且基本上只能傳輸靜態圖像)。

        linux相關文章:linux教程


        攝像頭相關文章:攝像頭原理

        上一頁 1 2 3 下一頁

        關鍵詞: GPS 3G 視頻監控 H.264 RTP

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 三原县| 嘉黎县| 襄樊市| 历史| 永昌县| 婺源县| 湟源县| 博罗县| 曲靖市| 朝阳市| 三明市| 新密市| 江川县| 大关县| 酒泉市| 古浪县| 甘洛县| 习水县| 醴陵市| 阳东县| 永顺县| 普兰店市| 鸡西市| 民丰县| 安陆市| 沂水县| 龙岩市| 手游| 保康县| 卓尼县| 响水县| 芒康县| 车险| 界首市| 宜昌市| 乐昌市| 仙桃市| 泽库县| 大荔县| 叶城县| 房产|