摘 要:文章對RTMP協(xié)議的概念及其在網(wǎng)絡播出中的應用進行系統(tǒng)性闡述。分別介紹了流媒體平臺的采集端與服務端所采用的技術,并通過某廣播電視臺案例加以說明。
關鍵詞:RTMP協(xié)議;流媒體;網(wǎng)絡播出平臺
近年來,隨著網(wǎng)絡技術的不斷提升以及多媒體壓縮編碼技術的發(fā)展,流媒體作為一種新穎的傳輸技術已經(jīng)得到了非常廣泛的應用。人們在這種大環(huán)境下對于播出的需求已經(jīng)不僅僅局限于收看傳統(tǒng)的廣播電視,因此各級地方廣播電視臺也開始紛紛轉(zhuǎn)型,將視音頻播出業(yè)務由以往的廣播電視端轉(zhuǎn)向了多端(電腦、智能手機、平板電腦)。
鑒于此,就需要一種網(wǎng)絡傳輸協(xié)議可以同時兼容多端設備,在保證視頻質(zhì)量的情況下滿足不同用戶的需求,文章通過分別介紹流媒體平臺的采集端與服務端,利用各種開源軟件,搭建一套基于RTMP協(xié)議的流媒體播放系統(tǒng)。
1 概念介紹
1.1 RTMP概念
RTMP協(xié)議基于TCP,是一個協(xié)議族,包括RTMP基本協(xié)議及多種協(xié)議變種。該協(xié)議是一種設計用來進行實時數(shù)據(jù)通信的網(wǎng)絡協(xié)議,主要用來在支持RTMP協(xié)議的流媒體服務器、客戶端之間進行音視頻和數(shù)據(jù)通信,是Adobe公司的私有協(xié)議。
1.2 HLS概念
HLS協(xié)議是一個由蘋果公司提出的基于HTTP的流媒體網(wǎng)絡傳輸協(xié)議。是蘋果公司軟件系統(tǒng)的一部分。它的工作原理是把整個流分成一個個小的基于HTTP的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數(shù)據(jù)速率。在開始一個流媒體會話時,客戶端會下載一個包含元數(shù)據(jù)的m3u8文件,用于尋找可用的媒體流。
2 服務器端介紹
2.1 Adobe Flash Media Server(FMS)介紹
FMS是Adobe公司推出的開發(fā)流媒體的服務器軟件。使用FMS平臺,可以通過網(wǎng)絡存儲錄制下來的音頻、視頻,也可以共享數(shù)據(jù)對象,并且可以將這些音頻、視頻和共享數(shù)據(jù)對象傳遞給多個客戶端,實現(xiàn)實時同步共享。該平臺集成了通訊功能和應用程序功能,它通過Flash Player 在客戶端提供視、音頻共享數(shù)據(jù)流,可以將實時的數(shù)據(jù)流通過網(wǎng)絡傳遞到各種支持FLASH設備上。
2.2 Nginx-Rtmp-Module插件
Nginx是一款輕量級的Web服務器,特點是占有內(nèi)存少,并發(fā)能力強,其不僅可以作為代理服務器使用,也可以作為負載均衡服務器使用。而Nginx-Rtmp-Module是Nginx的一個插件,在安裝Nginx時與Nginx一起編譯,就可以在Nginx的配置文件里進行配置。其作用是將Nginx變成可以接受RTMP協(xié)議的流媒體服務器,同時用戶可以通過瀏覽器使用HLS協(xié)議收看。
3 采集端介紹
3.1 視頻采集卡與IEEE1394接口
視頻采集卡的作用是將攝像機、錄像機、視頻矩陣、電視機輸出的視頻信號或者視、音頻的混合數(shù)據(jù)輸入計算機,并轉(zhuǎn)換成計算機可識別的數(shù)字數(shù)據(jù)。IEEE1394接口別名火線接口,是由蘋果公司領導的開發(fā)聯(lián)盟開發(fā)的一種高速傳送接口,主要用于視頻的采集。在INTEL高端主板與數(shù)碼攝像機(DV)上可以見到。
3.2 視頻編碼軟件
3.2.1 FFmpeg介紹。FFmpeg是一個開源免費跨平臺的視、音頻流方案,屬于自由軟件,它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案??梢詫⒁曨l流、視頻文件編碼已目前較為流行的協(xié)議進行推送。FFmpeg支持多進程、多線程編碼。
FFmpeg常用命令:
主要參數(shù):-i設定輸入流;-f設定輸出格式;-ss開始時間
視頻參數(shù):-b設定視頻流量;-r設定幀速率;-vcodec設定視頻編解碼器
音頻參數(shù):-ar設定采樣率;-acodec設定聲音編解碼器
3.2.2 Flash Media Live Encoder(FMLE)介紹。FMLE又稱實時視頻和音頻捕捉軟件,是一個媒體編碼器,它能夠?qū)⒁纛l和視頻實時流編碼傳送到 FMS服務器上。
4 某電視臺網(wǎng)絡直播平臺建設案例
4.1 直播平臺架構(gòu)圖解(圖1)
4.2 案例具體介紹
4.2.1 采集端方案介紹。(1)外出直播。SDI視頻信號通過切換臺輸入錄像機,筆記本電腦可以通過1394線采集錄像機信號,采用FMLE進行編碼推流。根據(jù)所處位置的差異,選擇采用衛(wèi)星直播車或4G網(wǎng)卡進行傳輸。(2)轉(zhuǎn)換電視信號進行直播。在服務器上通過視頻采集卡采集輸入的SDI信號,將FMS與FMLE同時安裝在服務器上,通過編碼軟件FMLE進行本地編碼。
4.2.2 中轉(zhuǎn)服務器介紹。安裝了FMS的服務器可以作為中轉(zhuǎn)服務器,負責接收FMLE推回的視頻流。但是由于開發(fā)版的FMS只能支持10個連接,且分辨率與碼率都有限制,固采用開源軟件FFmpeg進行二次編碼推流,由于FFmpeg支持多進程,可以批量進行編碼,能夠滿足多端設備需求。
4.2.3 服務端介紹。采用Nginx-Rtmp-Module插件進行部署,負責接收通過FFmpeg推送的RTMP流,并轉(zhuǎn)換成HLS流呈現(xiàn)給觀眾。采用這種做法的好處是:(1)穩(wěn)定性,項目采用LNMP架構(gòu)部署,Linux系統(tǒng)本身具有很強的穩(wěn)定性,Nginx是出色的web服務器,支持高并發(fā),Mysql和PHP可以用來對頁面進行動態(tài)開發(fā)。(2)安全性。Nginx可以對推流源地址進行限制,同時由于采用了中轉(zhuǎn)服務器,隱藏了真正推流地址,可以防止他人惡意串流。(3)防盜鏈。Nginx本身具有防盜鏈機制,可以防止視頻源為別人盜用。
5 結(jié)束語
隨著互聯(lián)網(wǎng)的高度普及和移動互聯(lián)網(wǎng)的發(fā)展,視、音頻節(jié)目更注重于在網(wǎng)絡中進行傳播。文章通過介紹各種應用軟件與視頻傳輸協(xié)議的原理,結(jié)合某廣播電視臺網(wǎng)絡播出平臺的案例,直觀展示了如何部署基于RTMP協(xié)議的網(wǎng)絡播出平臺,這對中小廣播電視臺的播出轉(zhuǎn)型具有一定意義。
參考文獻
[1]苗澤.Nginx高性能Web服務器詳解[Z].Nginx服務器的安裝部署.
[2]使用nginx搭建rtmp流媒體服務器環(huán)境[EB/OL].http://www.cnblogs.com/wainiwann/p/3866254.html.
[3]FMS開發(fā)者中心[EB/OL].http://www.adobe.com/cn/devnet/.
[4]姜浩然,徐林.基于RTMP的流媒體服務器的研究[J].