今天來簡介 RTMP 直播協議。
RTMP 全名 Real-Time Messaging Protocol ,是由 Adobe 所有的媒體傳輸協議,其走的是 TCP 協議,RTMP 有很多兄弟協議(例如 RTSP )或衍生協議(例如 RTMPS ),可以參考維基百科。
既然是 Adobe 所屬,RTMP 所傳輸的影片自然是以 FLV 為主,當然 RTMP 影片也可以是非直播 (具有明確片長、完整的影片) ,這個直播協議的即時性很好,延遲也比較小。
一個 RTMP 的影片連結是長這樣rtmp://184.72.239.149/vod/BigBuckBunny_115k.mov
我們可以用 HLS Player 來播放看看
RTMP 的延遲性比 HLS 還低,但它的其他缺點也很明顯:
雖然網頁播放器如Video.js、Clappr Payer、JWPlayer.js..等各種播放器都有方法可以播放RTMP,但根本上還是要打開 Flash 才能觀看。
上述兩點已經非常麻煩了,最致命的還是
上述三點主要是以網頁瀏覽器的角度來看,如果今天是要以 APP 的方式來播放RTMP,那以上自然不是大問題。
最後,單純以網頁前端的角度來看,繼續使用 RTMP 在網頁上的理由不多。
據我所知,現在仍在使用 RTMP 直播的,多半是一些歐美電視台直播(尤其運動類),其他產業則多半是博弈業 (因為賽事比分很重要所以延時性越小越好),然而現在正處於網頁上的過渡期,公司若決定使用 RTMP 至少會有兩個缺點:
由於 PC 瀏覽器預設把 Flash 關閉,所以前端還要額外去找一些方法或 Library 提醒/誘導使用者開啟 Flash。
萬一公司今天還混了其他類型直播(例如 HLS ),同時處理兩個協議真的是很煩,雖然這正是工程師的價值所在。
雖然 Chrome 或 Edge 等瀏覽器,開啟 Flash 還是能觀看 RTMP協議影片,但每個瀏覽器開啟的位置不一樣,如果是IE11,還需要額外安裝 Adobe Flash Player 才行。
在IE上
Edge上 開啟Flash
google上 開啟Flash
對使用者來說,他們不會在意什麼 Flash,使用者只關心影片可不可以看,影片不能播放,使用者就會以為壞了而向公司回報,在回應/客服的處理上會非常麻煩。
如果是在意延時性問題而不想用 HLS ,那現在也有其他選擇,例如 HTTP-FLV。
參考
Adobe RTMP規範