本站小編為你精心準備了無線視頻傳輸系統(tǒng)的設計參考范文,愿這些范文能點燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
《無線通信技術雜志》2014年第二期
1視頻數(shù)據(jù)的采集和編碼
1.1基于V4L2的視頻數(shù)據(jù)采集設計V4L2(VideoforLinuxTwo)是V4L的改進版,V4L2改進了V4L中的不足,具有更好的擴展性和靈活性,并且支持的硬件設備更多。利用V4L2接口函數(shù)獲取視頻幀數(shù)據(jù)有3種方式:read、write方式,用戶指針方式,內(nèi)存映射mmap方式。本系統(tǒng)通過內(nèi)存映射方式采集,采用這種方法不僅讀取方便,而且省去了大量的內(nèi)存拷貝,效率較高[8]。視頻采集過程如圖3。(1)打開視頻設備文件。fd=open(Device-name,mode);第一個參數(shù)是注冊在/dev/目錄下的設備名,打開模式可分為阻塞和非阻塞模式。(2)獲取設備屬性。調(diào)用函數(shù)ioctl(fd,VIDIOC_QUERYCAP,&cp)獲取打開設備文件的相關參數(shù)并存放到cap結(jié)構(gòu)中。(3)設置視頻的制式和幀格式。調(diào)用函數(shù)ioctl(fd,VIDIOCS_FMT,&fmt)設置捕獲圖像的存儲格式、寬帶、高度、像素大小等。(4)申請幀緩沖區(qū),并進行內(nèi)存映射。調(diào)用函數(shù)ioctl(fd,VIDIOC_REQBUFS,&req)向內(nèi)核申請req.count個幀緩存。通過VIDIOC_QUERBUF獲取緩存幀在內(nèi)核空間的地址,通過mmap方式將內(nèi)核空間中的內(nèi)存映射到用戶空間。(5)采集視頻數(shù)據(jù)。調(diào)用函數(shù)ioctl(fd,VIDIOC_STREAMON,&type)將數(shù)據(jù)存放到緩存中。(6)處理采集的數(shù)據(jù)。當應用程序?qū)⒆钕炔傻降囊粠瑪?shù)據(jù)取走時,幀緩沖重新放入隊列尾,從而循環(huán)采集數(shù)據(jù)。(7)關閉視頻設備。調(diào)用close(fp)實現(xiàn)設備的關閉。
1.2基于MFC的H.264編碼設計本系統(tǒng)利用S3C6410提供的MFC硬件編解碼器實現(xiàn)了H.264標準的視頻壓縮。硬編碼具有不占用CPU資源,運算速度快等優(yōu)點,從而滿足視頻數(shù)據(jù)實時性的要求。H.264編碼器要求輸入數(shù)據(jù)為YUV420格式,而V4L2輸出的視頻數(shù)據(jù)是YUV422格式,因此在完成編碼工作之前,要利用函數(shù)DoConvert()將YUV422格式轉(zhuǎn)換為YUV420格式。編碼的過程如圖4。(1)創(chuàng)建H.264編碼器。調(diào)用函數(shù)Ssb-SipH264EncodeInit(width,height,frame_rate,bitrate,gop_num)實現(xiàn)。(2)設置編碼器參數(shù),初始化H.264編碼器,分別調(diào)用函數(shù)SsbSipH264EncodeSetConfig(handle,type,value)和函數(shù)SsbSipH264EncodeExe(handle)來實現(xiàn)。(3)獲取要編碼的視頻數(shù)據(jù)的輸入緩沖區(qū)地址,調(diào)用SsbSipH264EncodeGetInBuf(handle,0)來實現(xiàn),該函數(shù)返回視頻數(shù)據(jù)的輸入地址。(4)讀取要編碼的視頻數(shù)據(jù),調(diào)用函數(shù)memcpy(p_inbuf,in_addr,frame_size)將需要編碼的視頻數(shù)據(jù)復制到上一步驟的輸入緩沖區(qū)中。(5)編碼視頻數(shù)據(jù),調(diào)用函數(shù)Ssb-SipH264EncodeExe(handle)實現(xiàn)H.264編碼。(6)輸出已編碼的視頻數(shù)據(jù),調(diào)用函數(shù)Ssb-SipH264EncodeGetOutBuf(handle,size)獲取編碼后數(shù)據(jù)的輸出緩沖區(qū)和編碼數(shù)據(jù)大小。(7)關閉設備,調(diào)用函數(shù)Ssb-SipH264EncodeDeInit(handle)釋放編碼器資源,并且關閉MFC設備。圖4H.264編碼流程圖
2視頻數(shù)據(jù)的傳輸
2.1基于RTP/RTCP的流媒體實時傳輸設計為滿足視頻監(jiān)控實時性的要求,需要RTCP(實時傳輸控制協(xié)議)和RTP(實時傳輸協(xié)議)協(xié)同使用,以有效的反饋和最小的開銷使傳輸效果達到最好。RTP負責實時性傳輸,但它本身不提供QoS,需要RTCP提供視頻質(zhì)量控制的手段和方法。而控制RTP包的發(fā)送則通過RTSP協(xié)議完成。
2.1.1live555簡介本系統(tǒng)利用開源Live555庫實現(xiàn)了基于RTP、RTCP的實時傳輸。Live555庫是一種為流媒體傳輸提供解決方案的跨平臺C++開源項目,在嵌入式環(huán)境中運行穩(wěn)定,性能較好,支持RTP/RTCP/RTSP/SDP等協(xié)議,支持多種音視頻編碼格式(如H.264、MPEG4、JPEG、DV等)的音視頻數(shù)據(jù)的發(fā)送、接收和處理。Live555包含四個基本的庫分別是BasicUsageEnvironment&TaskScheduler、UsageEnvir-onment、GroupSock和LiveMedia。LiveMedia模塊是最重要的模塊,基類是Medium,其它所有類都派生自該類[9]。
2.1.2基于Live555的流媒體服務器的設計針對Live555開源項目不支持H.264實時視頻流的接收,我們繼承FramedSource類寫一個Camer-aH264StreamFramer類,這個類負責實時的采集視頻圖像,使用MFC進行H.264硬編碼,然后覆蓋成員函數(shù)doGetNextFrame()。H.264編碼的每一幀交給VideoServerMediaSubsession處理。另外,還需要繼成OnDemandServerMediaSubses-sion類,寫一個H264LiveVideoServerMediaSubsession類,這個類負責管理Source和Sink,指示輸入和輸出。函數(shù)createNewStreamSource返回了實例化的CameraH264StreamFramer;函數(shù)createNewRTPSink返回了實例化的H264VideoRTPSink,其父類為RTP-Sink,這個類的作用是把原始的H264流封裝成RTP數(shù)據(jù)包[10-12]。類結(jié)構(gòu)圖如圖5:
2.1.3流媒體主程序設計流媒體主程序步驟如下:(1)構(gòu)造應用程序環(huán)境類:包括任務調(diào)度器TaskScheduler,構(gòu)造UsageEnviRonment對象的時候需要TaskScheduler作參數(shù)。(2)構(gòu)造RTSPServer對象,代表整個流媒體VideoServer,配置監(jiān)聽端口,這里設置為8554,可以選擇是否使用用戶名密碼方式訪問。(3)構(gòu)造MediaSession對象和MediaSubsession對象,表示具體的輸入視頻流和輸出流。MediaSub-session就是我們構(gòu)造的H264LiveVideoServerMediaSubsession。(4)把MediaSession加入到RTSPServer,調(diào)用RTSPServer的doEventLoop進入消息循環(huán),開始監(jiān)聽用戶請求接入,處理消息請求。圖5類結(jié)構(gòu)圖圖6視頻監(jiān)控效果圖
2.23G模塊聯(lián)網(wǎng)3G模塊與ARM是通過USB相連的。3G網(wǎng)絡的連接是通過點對點(PPP)協(xié)議來完成的,PPP是在串行連接的數(shù)據(jù)鏈路實現(xiàn)IP以及其它網(wǎng)絡協(xié)議的一種機制[13]。在Linux內(nèi)核中已經(jīng)添加了3G模塊的驅(qū)動和PPP協(xié)議的支持,還需要移植相應的撥號軟件實現(xiàn)撥號上網(wǎng)。本文選擇撥號軟件pppd,下載ppp-2.
2.4源碼包,進行交叉編譯生成撥號所需的應用程序pppd和chat,將這兩個應用程序拷貝到開發(fā)板/usr/sbin文件夾下,更改其屬性為可執(zhí)行文件。配置好撥號的腳本文件后,通過pppdcall命令即可實現(xiàn)WCDMA無線網(wǎng)絡的接入。通過AT指令對視頻數(shù)據(jù)進行UDP打包,最終將視頻數(shù)據(jù)包發(fā)送到3G網(wǎng)絡上。
3終端設備
在Window平臺下,用VLC播放器可以接收傳輸過來的視頻流。如果終端設備IP:221.6.52.114,在VLC的地址欄輸入rtsp://221.6.52.114:8554/live就可以播放流媒體視頻。運行效果如圖6。
4結(jié)束語
經(jīng)測試,本系統(tǒng)采集分辨率為320*240的圖像,經(jīng)H.264硬編碼后,每幀圖像大小只有5KB左右,幀率可達25f/s。對于WCDMA無線網(wǎng)絡的傳輸率一般在2Mbit/s左右,因此,該無線網(wǎng)絡能夠滿足實時視頻傳輸?shù)男枨蟆1疚脑O計的視頻傳輸系統(tǒng)結(jié)合了嵌入式技術﹑視頻壓縮編碼技術﹑流媒體實時傳輸技術、無線通信技術等多項技術,系統(tǒng)具有實時性好、穩(wěn)定性高、低成本、低功耗等優(yōu)點,有很高的應用價值和較為廣闊的市場前景。
作者:陳嵐 鮑可進單位:江蘇大學計算機科學與通信工程學院