国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

Linux嵌入式視頻直播監(jiān)控系統

發(fā)布時間:2010-9-25 11:05    發(fā)布者:eetech
1 引言

近年來,隨著網絡帶寬,計算機處理能力的極大提高和人們安全防范觀念的加強,視頻監(jiān)控領域進入了高速發(fā)展的數字化的網絡時代。但嵌入式處理器具有低功耗、體積小、經濟、穩(wěn)定的特點;Linux作為一個開源軟件,具有成本低廉的優(yōu)勢,同時兼具安全、穩(wěn)定的特點。因此,以嵌入式處理器作為硬件平臺,以Linux作為軟件平臺的視頻監(jiān)控系統能夠結合兩者的優(yōu)點,必將成為未來的發(fā)展方向。本文介紹了一種Linux嵌入式視頻直播監(jiān)控系統的設計和實現方案。

2 系統概述



圖 1 系統結構圖

系統采用服務器/客戶機架構,分別使用Intel Xscale PXA270、PXA255作為服務器、客戶機硬件平臺,并基于Linux (kernel version:2.6.12)操作系統進行開發(fā)。服務器采集視頻,壓縮后通過局域網傳遞給客戶機;客戶機接收數據,解壓縮后播放。

服務器通過USB攝像頭采集YUV格式視頻,然后進行MPEG-4壓縮,將壓縮后的MPEG-4幀進行RTP封裝,并通過RTP協議進行傳輸。客戶機接收RTP數據包,將數據組成一幀,然后進行MPEG-4解壓縮,得到YUV格式視頻。然而計算機只能顯示RGB格式視頻,因此通過圖像格式轉換成RGB格式。最后,利用Linux下的幀緩沖機制進行寫屏,從而實現了視頻回放。

3 系統軟件設計與實現

3.1 V4L視頻采集

Video4Linux(簡稱V4L)是Linux中關于視頻設備的內核驅動,它為針對視頻設備的應用程序編程提供一系列接口函數,這些視頻設備包括現今市場上流行的TV卡、視頻捕捉卡和USB攝像頭等。對于USB口攝像頭,其驅動程序中需要提供基本的I/O操作接口函數open,read,write,close的實現、對中斷的處理實現、內存映射功能以及對I/O通道的控制接口函數ioctl的實現等,并把它們定義在結構體file_operations中。這樣當應用程序對設備文件進行諸如open,close,read,write等系統調用操作時,Linux內核將通過file_operations結構訪問驅動程序提供的函數。

具體采集工作通過操作ioctl和mmap系統調用進行實現。ioctl實際上是input/output control的縮寫。ioctl系統調用的功能就是通過打開的文件描述符對各種文件尤其是字符設備文件進行控制,完成特定的I/O操作。在本系統中,使用ioctl(fd, VIDIOCGCAP, ∩)以獲取攝像頭基本信息;使用ioctl(fd, VIDIOCGMBUF, *mbuf)以獲取攝像頭緩沖區(qū)信息;使用ioctl(fd, VIDIOCMCAPTURE, &mm)進行圖像捕捉;使用ioctl(fd, VIDIOCSYNC, &frame)等待捕捉完該幀圖像。mmap調用的功能是實現內存映射,即將指定文件或對象的一部分映射到內存中去。這樣可以通過訪問特定的內存區(qū)域來直接對文件或對象進行存取。與read和write。調用相比,這種I/O方式的效率要高得多。

3.2 MPEG-4壓縮和解壓縮

MPEG是Moving Pictures Experts Group(運動圖像專家組)的縮寫。MPEG-4由MPEG制定,并于1999年2月正式成為ISO/IEC 14496國際標準。MPEG-4的壓縮方法不同于MPEG1/2或H.263+系列標準,它是基于對象的多媒體數據壓縮編碼國際標準,定義的是一種框架、一種格式,而不是一種具體的算法。它在多媒體環(huán)境下提供的基于不同對象的處理方法對自然或合成的音頻、視頻進行壓縮編碼,由一系列支持在該應用領域下的工具組成,能夠針對不同的應用組合使用不同的編碼工具,提供如形狀編碼、運動估計和運動補償編碼、紋理編碼和容錯編碼等技術。

本系統借助于MPEG-4開源庫Xvidcore作為編/解碼庫。具體選用版本1.1.2。Xvidcore中所有的編碼工作都是通過編碼函數xvid_encore執(zhí)行的,xvide_encore函數定義如下:

int xvid_encore(void * handle, int opt, void * paraml, void * param2);

其中opt為編碼所要做的操作,opt有以下三種操作:(1)XVID_ENC_CREATE:創(chuàng)建一個新的編碼器,則param1為XVID_ENC_PARAM, handle為新編碼的句柄;(2)XVID_ENC_ENCODE:編碼一幀,則param1為XVID_ENC_FRAME, param2為XVID_ ENC_ STATS或NULL;(3)XVID_DEC_DESTROY:編碼結束,不返回任何句柄。

Xvidcore的所有解碼工作都是由xvid_decore實現的,xvid_decore函數定義如下:

int xvid_decore(void * handle, int opt, void * param1, void * param2);  

其中opt為解碼所要做的操作,opt有以下三種操作:(1)XVID_DEC_CREATE:創(chuàng)建一個新的解碼器,則param1為XVID_DEC_PARAM,handle為新編碼的句柄;(2)XVID_DEC_DECODE: 解碼一幀,則param1為XVID_ENC_FRAME;(3)XVID_DEC_DESTROY: 關掉解碼器,不返回任何句柄。

系統通過采集模塊采集得到YUV420格式的視頻幀存放在緩沖區(qū)中,Xvidcore取出該緩沖區(qū)存放的原始幀數據,調用xvid_encore函數進行編碼。接收端調用xvid_decore函數對收到的幀進行解碼。從而實現了MPEG-4的壓縮和解壓縮。

3.3 RTP傳輸

實時傳輸協議(Real-time Transport Protocol,RTP)是在 Internet 上處理多媒體數據流的一種網絡協議,利用它能夠在一對一(unicast,單播)或者一對多(multicast,多播)的網絡環(huán)境中實現傳流媒體數據的實時傳輸。我們采用開源代碼Jrtplib提供的RTP協議棧。最新的Jrtplib對RFC3550的實現進行了封裝,使用C++語言開發(fā),能夠在多種平臺如Linux和Windows下運行。

在網絡帶寬比較低的情況下,數據丟幀現象比較嚴重,這對于圖像質量有很大的影響。我們采用拆幀以后再發(fā)送的方法,來降低丟幀率。接收端收到數據后,再把屬于同一視頻幀的數據組合起來。由于目前常用網絡是802.3的10Mb/s系統,而該系統最大有效載荷為1500字節(jié),因此設置1400為RTP包大小上限。網絡發(fā)送接收程序流程圖如圖2所示。


圖2 網絡發(fā)送接收程序流程圖

簡單的說,發(fā)送端發(fā)送RTP包到Client端,發(fā)送的時候是分批以數據包的形式發(fā)送到Client,就是說發(fā)送一個RTP包需要幾次數據包發(fā)送來完成。發(fā)送成功以后發(fā)送下一個數據包,通過調用Jrtplib中函數SendPacket()實現;

接收端依次循環(huán)調用函數GetNextPacket()來接收某一RTP包的數據,數據包到來不是按順序到來的,完全接收到RTP包所用的數據包以后,根據時間戳對所接收的數據包重新排序重新生成最初的RTP包。接收成功后,調用函數GotoNextSourceWithData()開始接收下一個RTP包。

3.4 寫framebuffer進行播放

framebuffer設備是圖形硬件的抽象概念,意指某些視頻硬件的幀緩沖,使得應用軟件可以通過定義好的接口訪問圖形硬件。framebuffer將顯示的象素點看成是內存的映射,屏幕上每一個點對應framebuffer內存中相應的單元。幀緩沖設備為標準字符設備,主設備號為29,次設備號從0到31,分別對應/dev/fb0-/dev/fb31,默認為/dev/fb0。通過/dev/fb0,應用程序主要完成以下幾種操作:

1. I/O控制(ioctl)操作:對于幀緩沖設備,對設備文件的ioctl操作可讀取(FBIOGET_SCREElVINFO,FBIOGET_SCREElVINFO)和設置(FBIOPUT_VSCREElVINFO, FBIOPUT_FSCREElVINFO)顯示設備及屏幕的參數,如分辨率、顯示顏色數、屏幕大小等。

2. 映射(mmap)操作:工作在保護模式的應用程序有自己的虛擬地址空間,但不能直接訪問物理緩沖區(qū)地址,為此可以使用mmap函數將文件的內容映射到用戶空間。之后用戶就可以通過讀寫這段虛擬地址訪問屏幕緩沖區(qū)在屏幕上繪圖了。

4 結束語

本文提出了一種Linux視頻直播監(jiān)控系統的設計和實現方案。經過對系統的測試表明:當客戶端向服務器請求現場音視頻流時,服務器端立刻向通過客戶端發(fā)送音視頻流,客戶端軟件實時接收、實時解碼、實時播放,都能流暢的播放出清晰畫面,無明顯抖動和延時。服務器和客戶機可以穩(wěn)定運行。服務器穩(wěn)定后,CPU利用率達60%-70%,客戶機穩(wěn)定后,CPU利用率達70%-80%。系統穩(wěn)定后,占用帶寬約400kbit/s-500kbit/s,播放幀率約14f/s,能夠滿足一般情況下視頻監(jiān)控要求。   

本論文的新見解主要體現在:

(1)提出了一套簡單易行的流媒體直播系統解決方案,并將其應用于嵌入式平臺。

(2)傳輸過程中對RTP數據包的大小進行控制,大大降低了丟幀率。
本文地址:http://www.qingdxww.cn/thread-28891-1-1.html     【打印本頁】

本站部分文章為轉載或網友發(fā)布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點宏來節(jié)省時間和空間
  • Dev Tool Bits——使用DVRT協議查看項目中的數據
  • Dev Tool Bits——使用MPLAB® Data Visualizer進行功率監(jiān)視
  • 貿澤電子(Mouser)專區(qū)

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产vr一区二区在线观看 | 福利一区二区在线 | 亚洲精品在线影院 | 久久成年视频 | 狠狠综合欧美综合欧美色 | 亚洲国产成人精品激情 | 四虎影视入口 | 亚色综合 | 日本不卡高清视频 | 亚洲第一人黄所 | 日本视频在线观看免费 | 欧美一区二区三区高清不卡tv | 天天摸夜夜添夜夜添国产 | 欧美高清在线 | 性久久久久 | 天天操天天干天天拍 | 免费在线黄视频 | 国产福利91精品一区二区 | 亚洲欧美在线观看首页 | 偷偷鲁国内视频视频在线 | 99精品在线免费观看 | 成人午夜黄色 | 青青草国产97免久久费观看 | 青青操青青操 | 欧美videos另类极品 | 91极品反差婊在线观看 | 国亚洲欧美日韩精品 | 在线观看一级毛片免费 | 日本黄色大全 | 21天理论泰剧在线观看全集高清 | 91香蕉视频免费在线观看 | 香蕉大伊亚洲人在线观看 | 久久国产欧美日韩精品免费 | 男女免费视频网站 | 日本三级欧美三级人妇视频黑白配 | rct在线播放 | 狠狠操操操| 99热在线精品观看 | 艳母在线免费看影视网站 | 在线一区免费视频播放 | 国产欧美另类 |