基于A(yíng)RM11的無(wú)線(xiàn)視頻監控系統
4.1.1 WI-FI 無(wú)線(xiàn)網(wǎng)絡(luò )搭建過(guò)程
本文引用地址:http://dyxdggzs.com/article/273139.htm(1)加載WI-FI 模塊。通過(guò)insmod 命令加載,這里需要加載2 個(gè)文件helper_sd.bin、sd8686.bin,這2 個(gè)文件可以從Marvel 官方網(wǎng)站下載。
(2)搜索WI-FI 網(wǎng)絡(luò )。先用ifconfig eth1 up 命令把WI-FI 網(wǎng)絡(luò )接口卡打開(kāi),然后用iwlist eth1 scanning命令搜索WIFI 網(wǎng)絡(luò )。
(3)設置eth1 的ip 地址和子網(wǎng)掩碼。
(4)設置ESSID.通過(guò)iwconfig eth1 essid 402命令實(shí)現的,ESSID 用來(lái)區分不同的網(wǎng)絡(luò )。
(5)設置密碼。通過(guò)iwconfig eth1 key s:your_key命令實(shí)現的,其中your_key 就是登陸密碼。
4.1.2 基于RTP 協(xié)議的視頻數據傳輸
RTP 是實(shí)時(shí)傳送協(xié)議( Real-time TransportProtocol)的縮寫(xiě),代表一個(gè)網(wǎng)絡(luò )傳輸的協(xié)議,為音頻、視頻上傳中的常用協(xié)議[5].RTCP 和RTP 一起提供流量控制和擁塞控制服務(wù),它們能以有效反饋和最小開(kāi)銷(xiāo)使傳輸效率最佳化,因而特別適合傳送實(shí)時(shí)的數據,所以采用該協(xié)議傳輸視頻數據。
本系統采用開(kāi)源代碼Jrtplib 提供的RTP 協(xié)議棧,由于Jrtplib 對RFC3550 的實(shí)現進(jìn)行了封裝,使得傳輸視頻數據更加簡(jiǎn)單。由于本系統的網(wǎng)絡(luò )最大有效載荷為1500 字節,因此設置RTP 包大小的上限為1400 字節,如果發(fā)送的數據大于1400 字節,則采用拆包的方法再發(fā)送,具體傳輸過(guò)程如圖4 和圖5 所示。

圖4 發(fā)送端流程框圖。

圖5 接收端流程框圖。
發(fā)送端主要過(guò)程如下:
(1)創(chuàng )建RTP 會(huì )話(huà)并設置目標地址。調用Create方法得到RTP 會(huì )話(huà)實(shí)例,然后調用AddDestination 方法設置目標IP 以及目標端口號。
(2)獲得數據,調用Get_Data()函數得到。
(3)發(fā)送數據,通過(guò)SendPacket()方法實(shí)現。
接收端主要過(guò)程如下:
(1)創(chuàng )建RTP 會(huì )話(huà)。調用Create 方法來(lái)創(chuàng )建一個(gè)會(huì )話(huà)實(shí)例,并且在創(chuàng )建會(huì )話(huà)的同時(shí)設置端口號,要與發(fā)送端的端口號保持一致。
(2)接受RTP 數據。調用RTPSession 類(lèi)的PollData()方法接收數據。
(3)保存RTP 數據報。通過(guò)創(chuàng )建了一個(gè)指針數組,里面存放的是RTP 數據報的指針,只要將剛接收到RTP 數據報的指針賦給這個(gè)指針數組即可,這樣可以節省數據拷貝的時(shí)間。
(4)判斷是否接收完成,如果沒(méi)有,則跳轉到第b 步,否則接收端程序退出。
linux相關(guān)文章:linux教程
攝像頭相關(guān)文章:攝像頭原理
評論