王 艷
(公安部第一研究所,北京 100048)
Android系統(tǒng)中RTMP流媒體直播的設(shè)計與實(shí)現(xiàn)
王 艷
(公安部第一研究所,北京 100048)
在人煙稀少、邊遠(yuǎn)山區(qū)和高原等地區(qū),無線基站覆蓋面較小導(dǎo)致無線傳輸通道環(huán)境惡劣,無法有效實(shí)現(xiàn)遠(yuǎn)程高清音視頻的實(shí)時播放。前端無線手持設(shè)備多采用Android操作系統(tǒng),因此Android系統(tǒng)高質(zhì)量實(shí)時傳輸高清音視頻成為遠(yuǎn)程視頻監(jiān)控的關(guān)鍵問題。為保證高清音視頻的穩(wěn)定傳輸,解決網(wǎng)絡(luò)擁塞和畫面延遲抖動等問題,在Android系統(tǒng)上采用RTMP協(xié)議傳輸高清音視頻,優(yōu)化RTMP的數(shù)據(jù)傳輸策略,實(shí)現(xiàn)了高清音視頻的無線傳輸。在嚴(yán)重丟失幀的惡劣環(huán)境下測試該系統(tǒng),系統(tǒng)運(yùn)行穩(wěn)定,顯著提高了音視頻播放的流暢性和傳輸?shù)姆?wù)質(zhì)量。
Android;4G無線傳輸;RTMP;遠(yuǎn)程視頻監(jiān)控
無線通信傳輸技術(shù)飛速發(fā)展,為高清視頻的無線傳輸提供了有效的帶寬。但是在西部山區(qū)和高原等人煙稀少地區(qū)的無線基站建設(shè)較少,覆蓋面積較小,或者是在人群密集的公共場所,無線線路的傳輸通道帶寬較窄,無法滿足發(fā)生群體性事件時遠(yuǎn)程視頻監(jiān)控的需求。因此,研究低帶寬等惡劣環(huán)境下高清無線視頻的傳輸技術(shù)成為提升遠(yuǎn)程視頻監(jiān)控應(yīng)用性能的重要問題。
在公共安全業(yè)務(wù)領(lǐng)域,智能移動設(shè)備正快速成為無線通信的前端裝備,基于移動設(shè)備的無線通信將是遠(yuǎn)程視頻監(jiān)控的重要研究領(lǐng)域。任何時間、任何地點(diǎn)和任何設(shè)備支持視頻監(jiān)控,成為移動遠(yuǎn)程視頻監(jiān)控新的要求。這一新要求減小了系統(tǒng)對客戶端的地點(diǎn)限制,加快了應(yīng)急事件的響應(yīng)速度,提高了視頻監(jiān)控的效率。智能移動設(shè)備多采用Android操作系統(tǒng)來實(shí)現(xiàn)視頻監(jiān)控的便攜化,如何在Android操作系統(tǒng)環(huán)境下傳輸高清視頻成為移動遠(yuǎn)程視頻監(jiān)控的首要技術(shù)問題。但是,Android操作系統(tǒng)前端設(shè)備存在處理器速度慢和內(nèi)存空間小等資源有限的問題。因此,在針對低帶寬等惡劣環(huán)境下,本文提出了基于Android操作系統(tǒng)的遠(yuǎn)程無線視頻監(jiān)控傳輸方案,采用RTMP傳輸協(xié)議根據(jù)網(wǎng)絡(luò)狀況實(shí)時調(diào)整碼率和傳輸率來提高音視頻數(shù)據(jù)的傳輸質(zhì)量,實(shí)現(xiàn)前端視頻的流暢播放。測試該系統(tǒng),Android前端傳輸?shù)胶蠖说拿襟w流在服務(wù)器上能流暢播放,在公安領(lǐng)域的應(yīng)用前景廣闊。
RTMP(Real Time Messaging Protocol)支持端對端的可靠鏈接和完整的時間戳序列,采用TCP方式傳輸FLV報文,面向連接提供可靠的數(shù)據(jù)傳輸來減少丟包,降低了媒體流傳輸中丟包對播放質(zhì)量的影響和失真。FLV封裝以二進(jìn)制編碼產(chǎn)生的文件較小,經(jīng)過高度壓縮和序列化后,可靠有序傳輸減小網(wǎng)絡(luò)傳輸消耗,視頻加載速度快,占用CPU資源小,節(jié)省帶寬,實(shí)現(xiàn)了低碼率下的高速傳輸,適合窄帶下實(shí)時播放媒體流。
RTMP屬于應(yīng)用層協(xié)議,其封包結(jié)構(gòu)由包頭和包體組成。Message Type ID為1~7的消息表示協(xié)議控制,Message Type ID為8~9的消息分別傳輸音頻和視頻的數(shù)據(jù)。Message Type ID為15~20的消息發(fā)送AMF編碼的命令,完成用戶與服務(wù)器間的交互。Chunk消息塊首部由消息頭Chunk Basic Header、負(fù)載所屬消息Chunk Message Header和時間戳溢出Extended Timestamp三部分組成。RTMP消息的封裝結(jié)構(gòu)如圖1所示。
圖1 RTMP消息的封裝結(jié)構(gòu)
RTMP協(xié)議棧是由Chunk Stream、Message Formats和Commands Messages三部分組成。為保證在窄帶寬下傳輸媒體流,消息被拆分成若干字節(jié)的數(shù)據(jù)塊,添加消息頭后重新組成消息塊。前端設(shè)備將媒體流封裝為消息,消息分割為較小的數(shù)據(jù)塊,將分割后的數(shù)據(jù)塊以TCP協(xié)議發(fā)送到服務(wù)器。終端設(shè)備接收TCP協(xié)議的消息塊重新組合成消息,可播放解封裝后的媒體流。
基于多臺Android手機(jī)的遠(yuǎn)程視頻監(jiān)控系統(tǒng)由監(jiān)控點(diǎn)前端手機(jī)設(shè)備、媒體服務(wù)器和后端播放器組成。音視頻圖像的傳輸分為控制流和媒體流兩部分進(jìn)行通信。服務(wù)器和多客戶端間采用HTTP協(xié)議傳輸控制流,媒體流通過RTMP協(xié)議進(jìn)行傳輸。
RTMP協(xié)議中Message包由信令和媒體數(shù)據(jù)組成,Message Head區(qū)分Message的類型,可將端口設(shè)置為1935。Message包頭可動態(tài)調(diào)整,減小重復(fù)的消息頭信息來提高傳輸效率。Message數(shù)據(jù)是chunk的數(shù)據(jù)塊,StreamID作為唯一標(biāo)識來區(qū)分消息流,數(shù)據(jù)塊的大小由客戶端和服務(wù)器端可根據(jù)網(wǎng)絡(luò)狀態(tài)來動態(tài)協(xié)商。服務(wù)器和客戶端通過3次握手建立RTMP傳輸連接,創(chuàng)建傳輸流后設(shè)置Chunk大小發(fā)送數(shù)據(jù)。建立RTMP鏈接后,可交叉?zhèn)鬟f多個消息流,實(shí)現(xiàn)多路復(fù)用同一個鏈接。其Android系統(tǒng)下設(shè)計RTMP的傳輸協(xié)議如圖2所示。
圖2 Android操作系統(tǒng)下RTMP的協(xié)議設(shè)計
前端設(shè)備、服務(wù)器和后端播放器間控制流和媒體流的傳輸流程如下:
1)前端設(shè)備或后端播放器分別向服務(wù)器發(fā)起HTTP協(xié)議請求建立鏈接。
2)服務(wù)器解析HTTP請求,向前端設(shè)備或后端播放器回復(fù)HTTP應(yīng)答消息信令。
3)前端設(shè)備或后端播放器向服務(wù)器發(fā)出以0X03為包頭的握手請求。
4)服務(wù)器回復(fù)前端設(shè)備或后端播放器的的應(yīng)答信令。該信令由客戶端發(fā)起消息時的數(shù)字簽名產(chǎn)生對應(yīng)的驗證包組成。數(shù)據(jù)包的第一個字節(jié)可為空,第二節(jié)字節(jié)為1 536 byte的驗證信息。
5)前端設(shè)備或后端播放器向服務(wù)器發(fā)送應(yīng)答信令。應(yīng)答完畢后,向服務(wù)器發(fā)送媒體流數(shù)據(jù)包,或者實(shí)現(xiàn)服務(wù)器向后端播放器發(fā)送媒體流數(shù)據(jù)包。
RTMP鏈接中多個虛擬通道進(jìn)行數(shù)據(jù)傳輸,遠(yuǎn)程調(diào)用和數(shù)據(jù)傳輸在邏輯上進(jìn)行分離。命令消息由事務(wù)ID、命令名和命令對象組成,分為NetConnection命令和NetStream命令。NetConnection用來管理客戶端和服務(wù)端間連接,由connect建立請求和call調(diào)用遠(yuǎn)程服務(wù)器的RPC操作命令組成。NetStream操作傳輸通道上的媒體流傳輸,由通道上播放流文件的play信令、銷毀播放流的deleteStream信令、receiveAudio信令和pause信令組成。
前端設(shè)備啟動服務(wù)器模式,采集實(shí)時音視頻圖像,并編碼成H.264碼流。后臺服務(wù)器啟動客戶端模式向前端設(shè)備發(fā)送請求鏈接的信令,建立鏈接后接收碼流并進(jìn)行實(shí)時存儲。前端設(shè)備采用基于Android系統(tǒng)下的socket編程,采用socket鏈接建立前端設(shè)備和服務(wù)器間的傳輸通道,其數(shù)據(jù)碼流的傳輸過程如圖3所示。
圖3 Android中RTMP的數(shù)據(jù)傳輸
Android中采集進(jìn)程使用RTMP協(xié)議鏈接多個攝像頭,主線程監(jiān)控RTMP的數(shù)據(jù)鏈接通道,子線程采集數(shù)據(jù)。將數(shù)據(jù)硬編碼成H.264碼流,RTMP封裝后一路響應(yīng)客戶端的請求傳輸給客戶端實(shí)現(xiàn)直播視頻,一路直接傳送至客戶端存儲為FLV文件格式。RTMP傳輸協(xié)議的播放請求分為直播信令和回放信令。若接收到直播信令,向采集進(jìn)程發(fā)送直播請求獲取H.264碼流。若接收到回放請求,根據(jù)信令中的時間段字段,讀取相應(yīng)的FLV文件來實(shí)現(xiàn)回放功能。
在4G的無線網(wǎng)絡(luò)環(huán)境下,通過多次試驗測試Android系統(tǒng)的RTMP協(xié)議下傳輸高清720p流媒體的性能。搭建測試環(huán)境的網(wǎng)絡(luò)帶寬為20 Mbyte/s,前端設(shè)備分別采用RTMP和RTSP不同方式傳輸流媒體,后端服務(wù)器所消耗的帶寬如表1所示。
表1 搭建測試環(huán)境測試RTMP的傳輸性能
RTMP直播RTP和RTSP直播[root@test1]#./test.sheth01[root@testc2]#./test2.sheth01IN:13Mbybe/sOUT:110Mbyte/sIN:15Mbybe/sOUT:100Mbyte/sIN:11Mbybe/sOUT:104Mbyte/sIN:9Mbybe/sOUT:92Mbyte/sIN:15Mbybe/sOUT:116Mbyte/sIN:14Mbybe/sOUT:98Mbyte/sIN:17Mbybe/sOUT:119Mbyte/sIN:15Mbybe/sOUT:103Mbyte/sIN:19Mbybe/sOUT:121Mbyte/sIN:17Mbybe/sOUT:102Mbyte/sIN:18Mbyte/sOUT:120Mbyte/sIN:15Mbybe/sOUT:112Mbyte/s
試驗結(jié)果表明,4G環(huán)境下播放100 Mbyte以上的視頻,測試得出RTMP傳輸方式比RTSP方式更節(jié)省帶寬,后臺服務(wù)器上的播放器直播H.264碼流的效果更流暢。因此,在較低帶寬下直播RTMP的媒體流,服務(wù)器能更好地承載并傳輸高清碼流。
測試本系統(tǒng)的功能實(shí)現(xiàn),數(shù)據(jù)傳輸流程是前端設(shè)備采集音視頻,通過RTMP協(xié)議傳送至后臺服務(wù)器,手機(jī)客戶端播放器支持圖像預(yù)覽、遙控操作和存儲回放等,手機(jī)播放器可查看前置回傳音視頻和修改前端設(shè)備的配置參數(shù)等功能。其RTMP傳輸?shù)墓δ苷故救鐖D4所示。
圖4 音視頻播放界面和控制界面
將本系統(tǒng)應(yīng)用于群體性事件等大規(guī)模人群等應(yīng)用場景中。由于人群密集導(dǎo)致帶寬受限,在這種情況下后臺服務(wù)器能很好地直播事件現(xiàn)場的情況。整套產(chǎn)品在實(shí)際工作環(huán)境中適應(yīng)性強(qiáng),安全穩(wěn)定,具有良好的應(yīng)用前景。
用戶對無線通信傳輸高清音視頻的要求越來越高,即使在惡劣的無線網(wǎng)絡(luò)環(huán)境下,用戶在后端監(jiān)控服務(wù)器上也希望得到流暢的高清碼流,這對惡劣環(huán)境下無線音視頻傳輸技術(shù)提出了較高的要求。為了更好地滿足用戶的需求,本文研究RTMP傳輸協(xié)議的傳輸原理,設(shè)計RTMP的傳輸協(xié)議,實(shí)現(xiàn)了Android系統(tǒng)的實(shí)時數(shù)據(jù)傳輸,后臺服務(wù)器得到了流暢的高清碼流,相關(guān)產(chǎn)品已在應(yīng)用中,并在實(shí)際工作中發(fā)揮了重要的作用。
[1] MARKER J. ActionScript for multiliayer games and virtual worlds[M]. [S.l.]:New Riders Press,2009:100-150.
[2] CAMARILLO G. Session description protocol (SDP) format for binary floor control protocol(BFCP) streams: RFC4583[S].2006.
[3] HAO Y. Design and deployment of a hybrid CDN-P2P system for live video streaming: experiences with LiveSky[C]//Proc. International Conference on Multimedia . Beijing, China: ACM,2009:10-16.
[4] JIANG H, LI J, LI Z C, et al. Efficient large-scale content distribution with combination of CDN and P2P networks[J]. International journal of hybrid information technology, 2009(2):20-25.
[5] HALIT C, CAPIN T. Multiscale motion saliency for key frame extraction from motion capture sequences[J]. Computer animation and virtual worlds, 2011(22):5-16.
[6] LI W G, WANG W L, JIN T. Evaluating spatial keyword queries under the MapReduce framework[C]//Proc. 17th International Conference on Database Systems for Advanced Applications. Berlin: Springer, 2012: 251-261.
Design and implementation of RTMP streaming media broadcast in Android system
WANG Yan
(TheFirstResearchInstituteofMinistryofPublicSecurity,Beijing100048,China)
In the sparsely populated, remote mountainous and plateau area, the coverage of wireless base station is small which lead to bad wireless channel environment. It is difficult to realize the real-time remote high-definition audio and video players. Android operating system is used in front end wireless handheld device. Android system has high quality real-time transmission of high-definition audio and video to become the key issue of remote video surveillance. In order to ensure the stability of high-definition audio and video transmission, and to solve the network congestion, picture delay and jitter problems, this paper on the Android system by RTMP protocol transmission HD audio and video, RTMP data transmission strategy optimization, realizes the wireless transmission of high-definition audio and video. The system is tested under severe environment condition, and the system is stable and service quality of audio and video playback is remarkably improved.
Android;4G wireless transmission;RTMP;remote video surveillance
王艷.Android系統(tǒng)中RTMP流媒體直播的設(shè)計與實(shí)現(xiàn)[J]. 電視技術(shù),2017,41(1):64-67. WANG Y.Design and implementation of RTMP streaming media broadcast in Android system[J]. Video engineering,2017,41(1):64-67.
TP311
A
10.16280/j.videoe.2017.01.013
2016-06-06
王 艷(1978— ),碩士,副研究員,主要從事無線通信與嵌入式系統(tǒng)設(shè)備研究。
責(zé)任編輯:薛 京