基於 SRS+NG 搭建 HLS 直播流媒體伺服器
協議介紹
SRS 支援 HLS/RTMP 兩種成熟而且廣泛應用的流媒體分發方式。
-
RTMP 指 Adobe 的 RTMP ( Realtime Message Protocol ),廣泛應用於低延時直播,也是編碼器和伺服器對接的實際標準協議,在 PC(Flash)上有最佳觀看體驗和最佳穩定性。
-
HLS 指 Apple 的 HLS ( Http Live Streaming ),本身就是 Live(直播)的,不過 Vod(點播)也能支援。HLS 是 Apple 平臺的標準流媒體協議,和 RTMP 在 PC 上一樣支援得天衣無縫。
HLS 和 RTMP 兩種分發方式,就可以支援所有的終端。RTMP 分發參考 基於 SRS 搭建 RTMP 直播流媒體伺服器 。
使用場景
-
簡單:HLS 作為流媒體協議非常簡單,Apple 支援得也很完善。Android 對 HLS 的支援也會越來越完善。
-
跨平臺:PC 主要的直播方案是 RTMP,也有一些庫能播放 HLS,譬如 JWPlayer,基於 OSMF 的 HLS 外掛也一大堆。所以實際上如果選一種協議能跨 PC/Android/IOS,那就是 HLS。
-
友好的 CDN 分發方式:目前 CDN 對於 RTMP 也是基本協議,但是 HLS 分發的基礎是 HTTP,所以 CDN 的接入和分發會比 RTMP 更加完善。能在各種 CDN 之間切換,RTMP 也能,只是可能需要對接測試。
-
IOS 上苛刻的穩定性要求:IOS 上最穩定的當然是 HLS,穩定性不差於 RTMP 在 PC-flash 上的表現。
總之,SRS 支援 HLS 主要是作為輸出的分發協議,直播以 RTMP+HLS 分發,滿總各種應用場景;點播以 HLS 為主。
協議對比
分發 | 平臺 | 協議 | 公司 | 說明 |
---|---|---|---|---|
RTMP | Windows Flash | RTMP | Adobe | 主流的低延時分發方式,Adobe對RTMP是Flash原生支援方式,FMS(Adobe Media Server前身),就是Flash Media Server的簡寫,可見Flash播放RTMP是多麼“原生”,就像瀏覽器開啟http網頁一樣“原生”,經測試,Flash播放RTMP流可以10天以上不間斷播放。 |
HLS | Apple/Android | HTTP | Apple/Google | 延時一個切片以上(一般10秒以上),Apple平臺上HLS的效果比PC的RTMP還要好,而且Apple所有裝置都支援,Android最初不支援HLS,後來也支援了,但測試發現支援得還不如Apple,不過觀看是沒有問題,穩定性稍差,所以有些公司專門做Android上的流媒體播放器。 |
HDS | – | HTTP | Adobe | Adobe自己的HLS,協議方面做得是複雜而且沒有什麼好處,國內沒有什麼應用,傳說國外有,SRS2已經支援。 |
dash | – | HTTP | – | Dynamic Adaptive Streaming over HTTP (DASH),為了對業界存在的多種自適應流技術進行規範,MEPG推出MEPG-DASH標準。旨在為動態自適應流媒體技術創造一種同一的協議標準,nginx-rtmp已經支援。 |
部署
基於 滴滴雲 DC2(IP:116.85.57.94)進行軟體部署,使用 SRS 切片,使用 NGINX 分發 HLS。
第一步 ,獲取 SRS。
[ dc2 - user @ 10 - 254 - 81 - 196 ~ ] $ git clone https : //github.com/ossrs/srs
[ dc2 - user @ 10 - 254 - 81 - 196 ~ ] $ cd srs / trunk
第二步 ,編譯 SRS。
[ dc2 - user @ 10 - 254 - 81 - 196 trunk ] $ . / configure && make
第三步 ,編寫 SRS 配置檔案。
將以下內容儲存為檔案
conf/srs.conf
,伺服器啟動時指定該配置檔案 ( SRS 的 conf 資料夾有該檔案):
第四步 ,啟動 SRS。
第五步 ,獲取、編譯 NGINX。
-
獲取 NGINX 包
[ dc2 - user @ 10 - 254 - 81 - 196 ~ ] $ wget http : //nginx.org/download/nginx-1.12.2.tar.gz
-
編譯安裝 NGINX
[ dc2 - user @ 10 - 254 - 81 - 196 ~ ] $ tar - zxvf nginx - 1.12.2.tar.gz
[ dc2 - user @ 10 - 254 - 81 - 196 ~ ] $ cd nginx - 1.12.2 && . / configure && make && make install
第六步 ,編寫配置檔案、啟動 NGINX。
-
編寫配置檔案
-
啟動 NGINX
[ dc2 - user @ 10 - 254 - 81 - 196 ~ ] $ . / nginx - 1.12.2 / objs / nginx - c . . / conf / nginx . conf
第七步 ,啟動推流編碼器。
Linux 系統下可以使用 FFMPEG 進行推流; Windows/Ios 系統下可選擇 OBS 進行推流。(本文我們使用 FFMPEG 進行推流演示)
-
獲取 FFMPEG
[ dc2 - user @ 10 - 254 - 81 - 196 ~ ] $ git clone https : //git.ffmpeg.org/ffmpeg.git ffmpeg
[ dc2 - user @ 10 - 254 - 81 - 196 ~ ] $ cd ffmpeg
-
編譯 FFMPEG
[ dc2 - user @ 10 - 254 - 81 - 196 ffmpeg ] $ . / configure && make
如果編譯失敗,請根據提示內容安裝依賴環境或忽略。
-
使用 FFMPEG 推流
[ dc2 - user @ 10 - 254 - 81 - 196 ffmpeg ] $ . / ffmpeg - re - i . . / test . mp4 - f flv - vcodec copy - acodec copy - y rtmp : //116.85.57.94:888/live?vhost=stream.didi.com/teststream
第八步 ,觀看 HLS 直播流。
HLS 播放地址為:
-
可使用軟體 VLC 播放。
-
可使用 CUTV 線上播放器 播放。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2285570/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於SRS搭建RTMP直播流媒體伺服器伺服器
- nginx上搭建HLS流媒體伺服器Nginx伺服器
- nginx+ffmpeg搭建流媒體伺服器(直播流)Nginx伺服器
- [SRS流媒體]RTMP/HLS 直播伺服器simple-rtmp-server安裝伺服器Server
- 搭建一個點播跟直播流媒體伺服器玩玩伺服器
- 為SRS流媒體伺服器新增HLS加密功能(附原始碼)伺服器加密原始碼
- 直播流媒體伺服器解決方案伺服器
- day122:MoFang:OSSRS流媒體直播伺服器&基於APICloud的acLive直播推流模組實現RTMP直播推流伺服器APICloud
- 淺析 HLS 流媒體協議協議
- 1.RTMP流媒體伺服器搭建伺服器
- vlc簡單搭建流媒體伺服器伺服器
- 技術分享| 如何搭建直播場景下的推拉流媒體伺服器伺服器
- crtmpserver系列(二):搭建簡易流媒體直播系統Server
- 利用nginx搭建RTMP視訊點播、直播、HLS伺服器Nginx伺服器
- 使用Nginx搭建rtmp流媒體伺服器筆記Nginx伺服器筆記
- Ubuntu 中使用 Nginx+rtmp 搭建流媒體直播服務.mdUbuntuNginx
- JMeter流媒體線上播放HLS外掛BlazeMeter - HLS Plugin實現視訊線上播放壓測JMeterPlugin
- 直播搭建中的流媒體傳輸系統的核心乾貨
- 直播app製作時應該自建流媒體伺服器嗎?APP伺服器
- 流媒體技術基礎-流媒體傳輸協議(二)協議
- Windows Server 2022 上搭建流媒體直播和點播服務WindowsServer
- 如何基於surging架設流媒體影片推流(影片講解)
- 什麼是流媒體伺服器?伺服器
- 用VLC做流媒體伺服器伺服器
- 直播帶貨app原始碼,關於流媒體技術的那些事APP原始碼
- Golang開源流媒體伺服器(RTMP/RTSP/HLS/FLV等協議)Golang伺服器協議
- 關於視訊流媒體伺服器的學習記錄伺服器
- 一步一步搭建基於ffmpeg和sdl2的流媒體播放器播放器
- SequoiaDB巨杉資料庫入門:快速搭建流媒體伺服器資料庫伺服器
- nginx搭建支援http和rtmp協議的流媒體伺服器之一NginxHTTP協議伺服器
- 媒體轉碼HLS標準加密詳解加密
- 直播間搭建中流媒體直播系統的幾大要素
- 搭建rtmp流媒體伺服器過程中遇到的一個小問題伺服器
- 流媒體加密加密
- “笑”傲流媒體―SMIL基礎教程(轉)
- CD 從抓軌到搭建流媒體伺服器 —— 以《月臨寐鄉》為例伺服器
- 廣電教育融媒體/影片流媒體系統方案(影片直播、傳輸、回放、錄製)
- 使用ffmpeg推送視訊流至流媒體伺服器(c語言)伺服器C語言