利用Simple-RTMP-Server搭建RTMP和HLS直播服务(上)
SRS(Simple-RTMP-Server)定位是運營級的互聯網直播服務器集群,追求更好的概念完整性和最簡單實現的代碼,在Github上人氣頗高。本文是由王學投稿的SRS搭建直播的學習筆記,由LiveVideoStack整理并首發。
文 / 王學
整理 / LiveVideoStack
文章共6個部分,涉及SRS采集 、編碼、錄制、傳輸、解碼等整套解決方案。
-
下載和編譯SRS
-
利用OBS推流RTMP到SRS
-
從RTSP鏡頭拉取流到SRS
-
SRS demo 運行
-
SRS流程簡單分析
-
SRS支持將RTMP流錄制成flv文件
一、下載和編譯SRS
官方地址:https://github.com/ossrs/srs
tar -zxvf srs-2.0-r2.tar.gz?
cd srs-2.0-r2
./configure --with-ssl --with-hls --with-nginx --with-ingest --with-ffmpeg --with-transcode –demo
make
注意:官方說需要關閉防火墻和selinux
二、利用OBS推流和用VLC播放
1、推流地址:rtmp://192.168.43.118:1935/live/livestream
確定后,開始推流。由于設置了HLS分發,所以在Nginx目錄下(./objs/nginx/html/live)會有m3u8/ts。ts文件的長度和個數是根據配置文件的hls_fragment和hls_window屬性配置出來,詳細請參看:https://github.com/ossrs/srs/wiki/v2_CN_DeliveryHLS
2、使用默認的配置文件hls.conf
listen ? ? ? ? ? ? ?1935;
max_connections ? ? 1000;
vhost __defaultVhost__ {
hls {
? ? ? ? enabled ? ? ? ? on;
hls_path ?./objs/nginx/html;
hls_fragment ? ?10;
hls_window ? ? ?60;
? ? }
}
hls配置節(hls分發)
-
enabled:是否開啟HLS
-
hls_fragment:指定ts切片的最小長度(單位:秒)
-
hls_window:指定HLS大小,即m3u8中ts文件的時長之和,超過總時長后,丟棄第一個m3u8中的第一個切片,直到ts的總時長在這個配置項范圍之內。即SRS保證下面的公式:hls_window>= sum(m3u8中每個ts的時長)
詳細說明:https://github.com/ossrs/srs/wiki/v2_CN_DeliveryHLS
#啟動分發hls(m3u8/ts)的nginx
./objs/nginx/sbin/nginx
#啟動srs服務
./objs/srs -c ./conf/hls.conf
3、用VLC來播放HLS或RTMP
RTMP播放地址:rtmp://192.168.43.118:1935/live/livestream
HLS播放地址:http://192.168.43.118/live/livestream.m3u8
三、從RTSP鏡頭拉取流到SRS
手機作為RTSP攝像頭,安裝EasyIPCamera。感謝EasyDarwin提供這個好用的工具。
rtsp://192.168.43.49:8554/201708
#啟動srs服務
./objs/srs -c ./conf/ingest.conf
1、使用默認的配置文件ingest.conf
# use ffmpeg to ingest file/stream/device to SRS
# @see https://github.com/ossrs/srs/wiki/v1_CN_SampleIngest
# @see full.conf for detail config.
listen ? ? ? ? ? ? ?1935;
max_connections ? ? 1000;
daemon ? ? ? ? ? ? ?off;
srs_log_tank ? ? ? ?console;
vhost __defaultVhost__ {
? ? ingest livestream {
? ? ? ? enabled ? ? ?on;
? ? ? ? input {
? ? ? ? ? ? type ? ?stream;
? ? ? ? ? ? url ? ? rtsp://192.168.43.49:8554/201708;
? ? ? ? }
? ? ? ? ffmpeg ? ? ?./objs/ffmpeg/bin/ffmpeg;
? ? ? ? engine {
? ? ? ? ? ? enabled ? ? ? ? ?off;
? ? ? ? ? ? output ? ? ? ? ?rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream2;
? ? ? ? }
? ? }
}
2、 用VLC來播放RTMP
四、SRS demo 運行
啟動srs 服務器 ./scripts/run.sh?
啟動SRS轉發服務器成功
停止srs 服務器 ./scripts/stop.sh
訪問http://192.168.43.118:8085
五、SRS流程分析
?
六、SRS支持將RTMP流錄制成flv文件
待續。有興趣你也可一試,走進流媒體領域。加油!
關于作者
王學,目前就職于東方網力,早期進入北海通信,對音視頻領域的研發產生了極大的興趣,在嵌入式板子上研究ffplay(當時FFmpeg還是0.9.x版本)。后進入安防領域,從事安防平臺服務器端Linux C++開發工作,也喜歡研究服務器端高并發、高可靠性的實現。
LiveVideoStack招募社區編輯
LiveVideoStack是專注在音視頻、多媒體開發的技術社區,通過傳播最新技術探索與應用實踐,幫助技術人員成長,解決企業應用場景中的技術難題。如果你有意為音視頻、多媒體開發領域發展做出貢獻,歡迎成為LiveVideoStack社區編輯的一員。你可以翻譯、投稿、采訪、提供內容線索等。
通過contribute@livevideostack.com聯系,或在LiveVideoStack公眾號回復『社區編輯』了解詳情。
總結
以上是生活随笔為你收集整理的利用Simple-RTMP-Server搭建RTMP和HLS直播服务(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抓不到娃娃?不能总怪运气差!
- 下一篇: LiveVideoStack Meet成