王 艷
(公安部第一研究所,北京 100048)
Android系統中RTMP流媒體直播的設計與實現
王 艷
(公安部第一研究所,北京 100048)
在人煙稀少、邊遠山區和高原等地區,無線基站覆蓋面較小導致無線傳輸通道環境惡劣,無法有效實現遠程高清音視頻的實時播放。前端無線手持設備多采用Android操作系統,因此Android系統高質量實時傳輸高清音視頻成為遠程視頻監控的關鍵問題。為保證高清音視頻的穩定傳輸,解決網絡擁塞和畫面延遲抖動等問題,在Android系統上采用RTMP協議傳輸高清音視頻,優化RTMP的數據傳輸策略,實現了高清音視頻的無線傳輸。在嚴重丟失幀的惡劣環境下測試該系統,系統運行穩定,顯著提高了音視頻播放的流暢性和傳輸的服務質量。
Android;4G無線傳輸;RTMP;遠程視頻監控
無線通信傳輸技術飛速發展,為高清視頻的無線傳輸提供了有效的帶寬。但是在西部山區和高原等人煙稀少地區的無線基站建設較少,覆蓋面積較小,或者是在人群密集的公共場所,無線線路的傳輸通道帶寬較窄,無法滿足發生群體性事件時遠程視頻監控的需求。因此,研究低帶寬等惡劣環境下高清無線視頻的傳輸技術成為提升遠程視頻監控應用性能的重要問題。
在公共安全業務領域,智能移動設備正快速成為無線通信的前端裝備,基于移動設備的無線通信將是遠程視頻監控的重要研究領域。任何時間、任何地點和任何設備支持視頻監控,成為移動遠程視頻監控新的要求。這一新要求減小了系統對客戶端的地點限制,加快了應急事件的響應速度,提高了視頻監控的效率。智能移動設備多采用Android操作系統來實現視頻監控的便攜化,如何在Android操作系統環境下傳輸高清視頻成為移動遠程視頻監控的首要技術問題。但是,Android操作系統前端設備存在處理器速度慢和內存空間小等資源有限的問題。因此,在針對低帶寬等惡劣環境下,本文提出了基于Android操作系統的遠程無線視頻監控傳輸方案,采用RTMP傳輸協議根據網絡狀況實時調整碼率和傳輸率來提高音視頻數據的傳輸質量,實現前端視頻的流暢播放。測試該系統,Android前端傳輸到后端的媒體流在服務器上能流暢播放,在公安領域的應用前景廣闊。
RTMP(Real Time Messaging Protocol)支持端對端的可靠鏈接和完整的時間戳序列,采用TCP方式傳輸FLV報文,面向連接提供可靠的數據傳輸來減少丟包,降低了媒體流傳輸中丟包對播放質量的影響和失真。FLV封裝以二進制編碼產生的文件較小,經過高度壓縮和序列化后,可靠有序傳輸減小網絡傳輸消耗,視頻加載速度快,占用CPU資源小,節省帶寬,實現了低碼率下的高速傳輸,適合窄帶下實時播放媒體流。
RTMP屬于應用層協議,其封包結構由包頭和包體組成。Message Type ID為1~7的消息表示協議控制,Message Type ID為8~9的消息分別傳輸音頻和視頻的數據。Message Type ID為15~20的消息發送AMF編碼的命令,完成用戶與服務器間的交互。Chunk消息塊首部由消息頭Chunk Basic Header、負載所屬消息Chunk Message Header和時間戳溢出Extended Timestamp三部分組成。RTMP消息的封裝結構如圖1所示。

圖1 RTMP消息的封裝結構
RTMP協議棧是由Chunk Stream、Message Formats和Commands Messages三部分組成。為保證在窄帶寬下傳輸媒體流,消息被拆分成若干字節的數據塊,添加消息頭后重新組成消息塊。前端設備將媒體流封裝為消息,消息分割為較小的數據塊,將分割后的數據塊以TCP協議發送到服務器。終端設備接收TCP協議的消息塊重新組合成消息,可播放解封裝后的媒體流。
基于多臺Android手機的遠程視頻監控系統由監控點前端手機設備、媒體服務器和后端播放器組成。音視頻圖像的傳輸分為控制流和媒體流兩部分進行通信。服務器和多客戶端間采用HTTP協議傳輸控制流,媒體流通過RTMP協議進行傳輸。
RTMP協議中Message包由信令和媒體數據組成,Message Head區分Message的類型,可將端口設置為1935。Message包頭可動態調整,減小重復的消息頭信息來提高傳輸效率。Message數據是chunk的數據塊,StreamID作為唯一標識來區分消息流,數據塊的大小由客戶端和服務器端可根據網絡狀態來動態協商。服務器和客戶端通過3次握手建立RTMP傳輸連接,創建傳輸流后設置Chunk大小發送數據。建立RTMP鏈接后,可交叉傳遞多個消息流,實現多路復用同一個鏈接。其Android系統下設計RTMP的傳輸協議如圖2所示。

圖2 Android操作系統下RTMP的協議設計
前端設備、服務器和后端播放器間控制流和媒體流的傳輸流程如下:
1)前端設備或后端播放器分別向服務器發起HTTP協議請求建立鏈接。
2)服務器解析HTTP請求,向前端設備或后端播放器回復HTTP應答消息信令。
3)前端設備或后端播放器向服務器發出以0X03為包頭的握手請求。
4)服務器回復前端設備或后端播放器的的應答信令。該信令由客戶端發起消息時的數字簽名產生對應的驗證包組成。數據包的第一個字節可為空,第二節字節為1 536 byte的驗證信息。
5)前端設備或后端播放器向服務器發送應答信令。應答完畢后,向服務器發送媒體流數據包,或者實現服務器向后端播放器發送媒體流數據包。
RTMP鏈接中多個虛擬通道進行數據傳輸,遠程調用和數據傳輸在邏輯上進行分離。命令消息由事務ID、命令名和命令對象組成,分為NetConnection命令和NetStream命令。NetConnection用來管理客戶端和服務端間連接,由connect建立請求和call調用遠程服務器的RPC操作命令組成。NetStream操作傳輸通道上的媒體流傳輸,由通道上播放流文件的play信令、銷毀播放流的deleteStream信令、receiveAudio信令和pause信令組成。
前端設備啟動服務器模式,采集實時音視頻圖像,并編碼成H.264碼流。后臺服務器啟動客戶端模式向前端設備發送請求鏈接的信令,建立鏈接后接收碼流并進行實時存儲。前端設備采用基于Android系統下的socket編程,采用socket鏈接建立前端設備和服務器間的傳輸通道,其數據碼流的傳輸過程如圖3所示。

圖3 Android中RTMP的數據傳輸
Android中采集進程使用RTMP協議鏈接多個攝像頭,主線程監控RTMP的數據鏈接通道,子線程采集數據。將數據硬編碼成H.264碼流,RTMP封裝后一路響應客戶端的請求傳輸給客戶端實現直播視頻,一路直接傳送至客戶端存儲為FLV文件格式。RTMP傳輸協議的播放請求分為直播信令和回放信令。若接收到直播信令,向采集進程發送直播請求獲取H.264碼流。若接收到回放請求,根據信令中的時間段字段,讀取相應的FLV文件來實現回放功能。
在4G的無線網絡環境下,通過多次試驗測試Android系統的RTMP協議下傳輸高清720p流媒體的性能。搭建測試環境的網絡帶寬為20 Mbyte/s,前端設備分別采用RTMP和RTSP不同方式傳輸流媒體,后端服務器所消耗的帶寬如表1所示。
表1 搭建測試環境測試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
試驗結果表明,4G環境下播放100 Mbyte以上的視頻,測試得出RTMP傳輸方式比RTSP方式更節省帶寬,后臺服務器上的播放器直播H.264碼流的效果更流暢。因此,在較低帶寬下直播RTMP的媒體流,服務器能更好地承載并傳輸高清碼流。
測試本系統的功能實現,數據傳輸流程是前端設備采集音視頻,通過RTMP協議傳送至后臺服務器,手機客戶端播放器支持圖像預覽、遙控操作和存儲回放等,手機播放器可查看前置回傳音視頻和修改前端設備的配置參數等功能。其RTMP傳輸的功能展示如圖4所示。

圖4 音視頻播放界面和控制界面
將本系統應用于群體性事件等大規模人群等應用場景中。由于人群密集導致帶寬受限,在這種情況下后臺服務器能很好地直播事件現場的情況。整套產品在實際工作環境中適應性強,安全穩定,具有良好的應用前景。
用戶對無線通信傳輸高清音視頻的要求越來越高,即使在惡劣的無線網絡環境下,用戶在后端監控服務器上也希望得到流暢的高清碼流,這對惡劣環境下無線音視頻傳輸技術提出了較高的要求。為了更好地滿足用戶的需求,本文研究RTMP傳輸協議的傳輸原理,設計RTMP的傳輸協議,實現了Android系統的實時數據傳輸,后臺服務器得到了流暢的高清碼流,相關產品已在應用中,并在實際工作中發揮了重要的作用。
[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系統中RTMP流媒體直播的設計與實現[J]. 電視技術,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— ),碩士,副研究員,主要從事無線通信與嵌入式系統設備研究。
責任編輯:薛 京