一、直播概述
關於直播,大概的過程是:推流端——>源站——>客戶端拉流,用媒介播放
客戶端所謂的拉流就是一個播放的地址url,會有多種類型的流:
視頻直播服務目前支持三種直播協議,分別是RTMP、HLS、FLV :
(1)RTMP: 實時消息傳輸協議,
但是需要 flash 插件的支持,則是,手機瀏覽器是無法支持的。跟其他因素無關,這種類型的流就是無法在手機瀏覽器播放。
(2)HLS 協議:基於HTTP協議的流直播(wikipedia)
。它可以基於h5的video標簽播放,所以只要支持h5就能支持hls這種推流,就是說它在大部分手機瀏覽器的支持度是很好的,但是有個致命的痛點就是延遲很大,會是10S以上,所以要實現在直播的過程中實現互動就很尷尬,所以適合僅僅看直播的業務。(文件是m3u8格式)
(3)HTTP-FLV :協議由 Adobe 公司主推,格式極其簡單,只是在大塊的視頻幀和音視頻頭部加入一些標記頭信息,由於這種極致的簡潔,在延遲表現和大規模並發方面都很成熟。唯一的不足就是在手機瀏覽器上的支持非常有限,但是用作手機端 APP 直播協議卻異常合適。
綜上: 你可以用rtmp協議的流實現在pc端的直播,用hls協議實現在手機端瀏覽器的直播。 畢竟rtmp的延時小,所以能用rtmp就不要hls
視頻的在客戶端的優先順序最好是:
* mobile :m3u8>mp4
* PC :RTMP>flv>m3u8>mp4
二、后台給你一個健康的流地址
本人被坑了半天,后台給了一個在騰訊雲生成的拉流地址,結果用了各種方式去播放,還是播放不了,問了騰訊雲的技術人員無結果,騰訊雲人還給網頁端的demo,在各個demo上去測試,其實。。。。。。。。。
你只要下載VLC一個軟件,支持多種類型的流播放器,你把地址放到這上面,就能檢測出給你拉流地址是否健康。
而后,后台通過在騰訊雲提交工單,才發現pc的推流,需要加防盜鏈,推流跟拉流都需要。
三、客戶端怎么去播放
有了以上的基本知識,有了多種類型的推流地址,
這個時候就是,你要怎么去播放這些流了,怎么讓播放器根據客戶端的類型,去選擇最優類的流去播放,
比如在pc,即使rtmp和hls都可以播放,但是hls延遲高,還是選擇rpmp播放
這個時候vedio.js 跟騰訊雲的兩個播放器早就幫你做好了這些事:
1、videojs
關於videojs,網上有很多demo,本人百度了那么多后,比較直接的資料如下:
videojs: (1)官方文檔:http://docs.videojs.com/tutorial-options.html#height
(2)vue總應用:https://www.npmjs.com/package/vue-video-player https://github.com/savokiss/vue-videojs-demo
(3)播放需要flash的流:https://github.com/videojs/videojs-flash
(4)播放hls的流:https://github.com/videojs/videojs-contrib-hls
2、騰訊的TCplayer,還有Web直播播放器1.0
(1)TCplayer: https://cloud.tencent.com/document/product/267/7479
(2)Web直播播放器1.0: https://cloud.tencent.com/document/product/267/5704
備注:
目前為止,咨詢了騰訊雲的技術人員,暫時這兩個播放器都可以實現直播,但是坑的是:
TCplaer沒有彈幕功能,但是有controls參數,可以隱藏視頻底部的工具欄,而
Web直播播放器1.0有彈幕,但沒有controls參數
總結:
試過了這幾種播放效果,最后還是選擇了TCplaer,而沒有用vediojs,因為在手機播放的時候,vediojs出現開始播放的播放按鈕一直卡住loding的狀態,而TC比較順暢,不知道是不是跟我們后台的流是后台推流的有關,待驗證
稍微,可能會做一個demo,可以讓大家直觀的看到兩個播放器的差別
現在看來,大家只要把騰訊雲關於直播的文檔認真看一兩遍,估計很多就理清了https://cloud.tencent.com/document/product/267
借鑒:WEB直播技術入門及在 Vue 中應用 video.js