基於SRS搭建RTMP直播流媒體伺服器
軟體定位
SRS 定位是運營級的網際網路直播伺服器叢集,追求更好的概念完整性和最簡單實現的程式碼。
-
運營級 :商業運營追求極高的穩定性、良好的系統對接、錯誤排查和處理機制。譬如日誌檔案格式、reload、系統 HTTP 介面、提供 init.d 指令碼、轉發、轉碼和邊緣回多源站,都是根據 CDN 運營經驗作為判斷這些功能作為核心的依據。
-
網際網路 :網際網路最大的特徵是變化,唯一不變的就是不斷變化的客戶要求,唯一不變的是基礎結構的概念完整性和簡潔性。網際網路還意味著參與性,聽取使用者的需求和變更,持續改進和維護。
-
直播伺服器 :直播和點播這兩種截然不同的業務型別,導致架構和目標完全不一致,從運營的裝置組,到應對的挑戰都完全不同。兩種都支援只能說明沒有重心或者低估了代價。
-
叢集 :FMS(AMS) 的叢集還是很不錯的,雖然運營容錯很差。SRS 支援完善的直播叢集,Vhost 分為源站和邊緣,容錯支援多源站切換、測速、可追溯日誌等。
-
概念完整性 :雖然程式碼甚至結構都在變化,但是結構的概念完整性是一直追求的目標。SRS 伺服器、P2P、ARM 監控產業、MIPS 路由器,伺服器監控管理、ARM 智慧手機,SRS 的規模不再是一個伺服器而已。
軟體應用
-
搭建大規模 CDN 叢集,可以在 CDN 內部的源站和邊緣部署 SRS。
-
小型業務快速搭建幾臺流媒體叢集,譬如學校、企業等,需要分發的流不多,同時 CDN 覆蓋不如自己部署幾個節點,可以用 SRS 搭建自己的小叢集。
-
SRS 作為源站,CDN 作為加速邊緣叢集。比如推流到 CDN 後 CDN 轉推到源站,播放時 CDN 會從源站取流。這樣可以同時使用多個 CDN。同時還可以在源站做 DRM 和 DVR,輸出 HLS,更重要的是如果直接推 CDN,一般 CDN 之間不是互通的,一個 CDN 出現故障無法快速切換到其他 CDN。
-
編碼器可以整合 SRS 支援拉流。一般編碼器支援推 RTMP/UDP 流,如果整合 SRS 後,可以支援多種拉流。
-
協議轉換閘道器,比如可以推送 FLV 到 SRS 轉成 RTMP 協議,或者拉 RTSP 轉 RTMP,還有拉 HLS 轉 RTMP。SRS 只要能接入流,就能輸出能輸出的協議。
-
學習流媒體可以用 SRS。SRS 提供了大量的協議的文件、wiki 和文件對應的程式碼、詳細的 issues、流媒體常見的功能實現,以及新流媒體技術的嘗試等。
軟體對比
與其他媒體軟體對比。
Stream Delivery
FEATURE | SRS | NGINX | CRTMPD | FMS | WOWZA |
---|---|---|---|---|---|
RTMP | Stable | Stable | Stable | Stable | Stable |
HLS | Stable | Stable | X | Stable | Stable |
HDS | Experiment | X | X | Stabl | Stable |
HTTP FLV | Stable | X | X | X | X |
HLS(aonly) | Stable | X | X | Stable | Stable |
HTTP Server | Stable | Stable | X | X | Stable |
Cluster
FEATURE | SRS | NGINX | CRTMPD | FMS | WOWZA |
---|---|---|---|---|---|
RTMP Edge | Stable | X | X | Stable | X |
RTMP Backup | Stable | X | X | X | X |
VHOST | Stable | X | X | Stable | Stable |
Reload | Stable | X | X | X | X |
Forward | Stable | X | X | X | X |
ATC | Stable | X | X | X | X |
Stream Service
FEATURE | SRS | NGINX | CRTMPD | FMS | WOWZA |
---|---|---|---|---|---|
DVR | Stable | Stable | X | X | Stable |
Transcode | Stable | X | X | X | Stable |
HTTP API | Stable | Stable | X | X | Stable |
HTTP hooks | Stable | X | X | X | X |
GopCache | Stable | X | X | Stable | X |
Security | Stable | Stable | X | X | Stable |
Token Traverse | Stable | X | X | Stable | X |
軟體部署
基於 DC2(IP:116.85.57.94)進行軟體部署。
第一步 ,獲取 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。
第五步 ,啟動推流編碼器。
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 - y rtmp : //116.85.57.94:888/live?vhost=stream.didi.com/teststream
第六步 ,觀看直播流。
RTMP 播放地址為:rtmp://116.85.57.94:888/live?vhost=stream.didi.com/teststream
(若域名可被公網解析,播放地址為:rtmp://stream.didi.com:888/live/teststream)
-
可使用軟體 VLC 播放。
-
可使用 CUTV 線上播放器 播放。
-
可使用 SRS 線上播放器 播放。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2220944/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於 SRS+NG 搭建 HLS 直播流媒體伺服器伺服器
- [SRS流媒體]RTMP/HLS 直播伺服器simple-rtmp-server安裝伺服器Server
- 1.RTMP流媒體伺服器搭建伺服器
- 使用Nginx搭建rtmp流媒體伺服器筆記Nginx伺服器筆記
- Ubuntu 中使用 Nginx+rtmp 搭建流媒體直播服務.mdUbuntuNginx
- nginx+ffmpeg搭建流媒體伺服器(直播流)Nginx伺服器
- day122:MoFang:OSSRS流媒體直播伺服器&基於APICloud的acLive直播推流模組實現RTMP直播推流伺服器APICloud
- docker 中使用原始碼方式搭建 SRS 流媒體服務Docker原始碼
- nginx搭建支援http和rtmp協議的流媒體伺服器之一NginxHTTP協議伺服器
- 搭建一個點播跟直播流媒體伺服器玩玩伺服器
- 搭建rtmp流媒體伺服器過程中遇到的一個小問題伺服器
- Nginx搭建RTMP推拉流伺服器Nginx伺服器
- 為SRS流媒體伺服器新增HLS加密功能(附原始碼)伺服器加密原始碼
- 直播流媒體伺服器解決方案伺服器
- FFmpeg開發筆記(三十八)APP如何訪問SRS推流的RTMP直播地址筆記APP
- 用RUST寫流媒體伺服器實戰——rtmp chunk 深入解析Rust伺服器
- 主流流媒體的綜合效能大 PK ( smart_rtmpd, srs, zlm, nginx rtmp )Nginx
- vlc簡單搭建流媒體伺服器伺服器
- nginx上搭建HLS流媒體伺服器Nginx伺服器
- 技術分享| 如何搭建直播場景下的推拉流媒體伺服器伺服器
- 通過 wireshark 抓包瞭解直播流媒體 RTMP 協議基本過程協議
- MAC 上編譯安裝nginx-rtmp-module 流媒體伺服器Mac編譯Nginx伺服器
- nginx 轉發 rtmp 直播流Nginx
- Android 如何直播 RTMP 流Android
- RTMP視訊直播系統(PC網頁/微信小程式/播放器/流媒體)網頁微信小程式播放器
- Ubuntu 中使用 Nginx+rtmp 模組搭建流媒體視訊點播服務UbuntuNginx
- 用RUST寫流媒體伺服器實戰——rtmp chunk 踩坑記錄Rust伺服器
- crtmpserver系列(二):搭建簡易流媒體直播系統Server
- 影片直播原始碼開發中的流媒體協議:rtmp協議原始碼協議
- 利用nginx搭建RTMP視訊點播、直播、HLS伺服器Nginx伺服器
- 播放RTMP協議的流媒體的幾種選擇協議
- 直播搭建中的流媒體傳輸系統的核心乾貨
- 直播app製作時應該自建流媒體伺服器嗎?APP伺服器
- 基於nginx-rtmp搭建點播平臺Nginx
- iOS開發 - Mac下搭建基於rtmp協議的ngnix本地伺服器iOSMac協議伺服器
- 流媒體技術基礎-流媒體傳輸協議(二)協議
- python利用ffmpeg進行rtmp推流直播Python
- Windows Server 2022 上搭建流媒體直播和點播服務WindowsServer