SRS

SRS

一、简介

SRS是一个简单高效的实时视频服务器,支持RTMP、RTSP、WebRTC、HLS、HTTP-FLV、SRT、GB28181等协议。传统的监控端(Windows PC桌面)可以通过RTSP/GB28181推流到SRS服务器,Web浏览器可以通过WebRTC推流SRS服务器,然后通过RTMP、HTTP-FLV等方式观看视频。

SRS支持两种方式得到RTMP流源:

  • 使用FFmpeg、设备或其它方式将流推送到SRS。
  • 使用SRS自身采集功能,将文件(flv/mp4/mkv/avi/rmvb等)、流(RTMP/RTMPT/RTMPS/RTP/HTTP/HLS等)、音视频设备等数据转封装为RTMP流(如编码不是H.2645/aac,则需转码)然后推送到SRS。

应用场景:

  • 虚拟直播:将文件编码为直播流,可指定多个文件,SRS会循环播放。
  • RTSP摄像头对接,可以将RTSP采集后,以RTMP推送至SRS。
  • 直接采集设备,SRS采集功能可以作为编码器采集设备上未压缩的图像数据,比如:video4Linux和alsa设备,编码为H.264/aac后将RTMP推送给SRS。
  • 将HTTP流采集为RTMP,推送给SRS。

支持功能包括:

  • RTMP推流,WebRTC播放、WebRTC推流。
  • AAC转换成Opus,直播主要是AAC,而WebRTC是Opus。
  • H5播放器rtc_player.html,已经放在了SRS网站上。
  • 支持UDP端口复用,默认以UDP/8000端口传输数据。
  • 支持通过ENV设置IP,在Docker中比较方便。
  • 裁剪FFmpeg库,静态库链接。
  • 使用FFmpeg-AAC编解码。
  • 支持丢弃B帧,避免抖动,后续会支持高级丢帧。

 二、编译

下载源码:

git clone https://github.com/ossrs/srs.git

编译:

cd ./srs/trunk
./configure --with-hls --with-ssl --with-http-server --with-http-callback --with-http-api --with-ingest --with-stream-caster
make -j8

三、启动

./objs/srs -c ./conf/srs.conf

成功启动后,如下图所示:

使用FFmpeg推流:

ffmpeg -re -i ./box.mp4 -vcodec libx264 -f flv rtmp://192.168.1.2:1935/live/livestream

播放:

rtmp://192.168.1.2/live/livestream  #RTMP地址
http://192.168.1.2:8080/live/livestream.flv #HTTP-FLV地址
http://192.168.1.2:8080/live/livestream.m3u8 #HLS流地址

四、集群

利用SRS的Forward机制和Edge Server 设计,可以很容易建立一个大规模高可用集群。

 概念介绍:

  • 源站服务器集群(Origin Server Cluster),借助Forward机制,仅用少量服务器,专门处理推流。
  • 边缘服务器集群(Edge Server Cluster),可用N台机器,从源站拉流,用于较大规模的实时播放。

五、SRS启用webRTC播放

SRS4.0.14以上版本默认支持webRTC(-rtc=on),所以直接编译即可:

./configure --with-hls --with-ssl --with-http-server --with-http-callback --with-http-api --with-ingest --with-stream-caster

使用默认的RTC配置启动SRS

./objs/srs  -c ./conf/rtc.conf

使用ffmpeg采集本地音视频,推流至SRS,SRS会通过协议转换生成WebRTC协议,将RTMP流至SRS中:

ffmpeg -f dshow -i video="HD Camera"  -vcodec libx264 -x264opts "bframse=0" -r 25 -g 25 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.1.2:1935/live/1

使用SRS自带的rtc_play播放器,之前请求SRS服务器的8080端口。

http://192.168.1.2:8080/players/rtc_player.html

在url 输入框中填入:

webrtc://192.168.1.2/live/1

点击播放视频按钮,即可播放直播流了。

posted @ 2023-10-21 17:59  钟齐峰  阅读(541)  评论(0编辑  收藏  举报