SRS搭建rtmp流媒体服务器

SRS搭建rtmp流媒体服务器


***【免费下载源码和PPT课件】***
***【在线视频教程】***


好文章,来自【福优学苑@音视频+流媒体】

 

SRS 简介

 

SRS 简介

 

    SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS,

 

    包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。SRS还支持将接入的RTMP流进行各种变换,譬如将RTMP流转码、流截图、

 

    转发给其他服务器、转封装成HTTP-FLV流、转封装成HLS、转封装成HDS、录制成FLV。SRS包含支大规模集群如CDN业务的关键特性,譬如RTMP

 

    多级集群、源站集群、VHOST虚拟服务器、无中断服务Reload、HTTP-FLV集群、Kafka对接。此外,SRS还提供丰富的应用接口,包括HTTP回调、

 

安全策略Security、HTTP API接口、RTMP测速。SRS在源站和CDN集群中都得到了广泛的应用Applications。官方说明

 

SRS特点

 

1、简单,足够稳定。

 

2、高性能,高并发,SRS是单线程、事件/st-线程驱动。最大可支持6k客户端。官网性能介绍: 性能测试

 

3、可以作为rtmp源服务器,也可作为节点对接CND,从其他rtmp服务器上推/拉流。

 

4、支持Vhost 及defaultVhost配置。

 

5、核心功能是分发RTMP,主要定位就是分发RTMP低延时流媒体,同时支持分发HLS流。

 

6、服务Reload 机制,即在不中断服务时应用配置的修改。达到不中断服务调整码率,添加或调整频道。

 

7、cache 一个GOP ,达到播放器能快速播放的效果。(gop_cache配置项)

 

8、可监听多个端口,支持长时间推拉流。

 

9、forward配置项,可在服务器间转发流。

 

10、支持转码,可以对推送到SRS的RTMP流进行转码,然后输出到其他RTMP服务器。可对指定的流配置是否转码。内置了FFMPEG.同时会提供FFMPEG的部分功能:输出纯音频、加文字水印、剪切视频、添加图片LOGO等。

 

11、支持http回调,提供了客户端连接接口、关闭连接接口、流发布、流停止、流播放、停止播放等接口,方便再封装的应用跟踪流信息。内置也有一个http服务器,可直接调用api接口。

 

12、内置流带宽测试工具、完善的日志跟踪规则。

 

13、脚本管理,提供init.d系统脚本,也可通过调用api 控制服务状态。

 

14、采集端支持:设备、本地文件,RTSP摄像头、rtmp等。官方意思是,能拉任意的流,只要FFMPEG支持,不是h264/aac都没有关系,FFMPEG能转码。SRS的接入方式可以是“推流到SRS”和“SRS主动拉流”。

 

15、支持将RTMP流录制成flv文件。FLV文件的命名规则是随机生成流名称,上层应用可通过http-callback 管理流信息。

 

16、SRS日志很完善,支持打印到console和file,支持设置level,支持连接级别的日志,支持可追溯日志。

 

SRS部署

 

SRS是国产优秀流媒体服务器,在Github上开源, 可在 Linux 机器各主流系统上部署。操作简单。

 

操作及配置清晰,文档齐全,在此只附上部署Demo : SRS_SampleDemo

 

XX云平台使用SRS案例

 

1、XX云平台PGC直播管理

 

通过SRS 的http_callback ,XX云的直播模块,完成对流信息的管理。

 

主要功能:创建频道、编辑频道、跟踪频道信息、转码模板、时移、录制、直播加密。

 

2、SRS集群

 

SRS集群 : 基于SRS多节点、多层级部署, 通过srs-调度,使得不同层级只负责一项任务。达到集群部署的效果,可横向和纵向扩展。

image.png

 

3、基于SRS集群的UGC直播管理

image.png

------------------------------------

 

1.源码下载:

 

git clone https://code.csdn.net/winlinvip/srs-csdn.git

cd srs-csdn

git pull  

git checkout 2.0release

2.编译安装

 

cd trunk

#查看编译时的帮助,里面有一些指定的参数是情况加减,官方文档

./configure -h 

#开始编译:

./configure --prefix=/usr/local/srs --with-ssl --with-hls --with-hds --with-dvr --with-nginx --with-http-callback --with-http-server --with-stream-caster --with-http-api --with-ffmpeg --with-transcode --with-ingest --with-stat --with-librtmp --with-research --with-utest --with-gperf --with-gprof

make

make install

 

 

3.第三方应用启动:

 

#启动nginx  for hls

sudo ./objs/nginx/sbin/nginx  

 

#ffmpeg

./objs/ffmpeg/bin/ffmpeg       

 

#to start the api-server

python ./research/api-server/server.py 8085

 

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

 

ps -ef | grep srs         #grep --color=auto srs

./objs/srs -v             #2.0.242

 

可能用到的调试命令:

sudo pkill -9 nginx 

objs/nginx/sbin/nginx -c ./objs/nginx-1.5.7/conf/nginx.conf

sudo nginx -s reload

到此为止,SRS已编译安装完成!

 

4.配置RTMP

 

文件目录:./conf/rtmp.conf 

配置内容:

listen              1935;

pid                 ./objs/srs.pid;

chunk_size          60000;

ff_log_dir          ./objs;

srs_log_tank        file;  

#配置日志答应到文件,需要和srs_log_level配合使用

srs_log_level       trace; 

#制定配置文件的级别,默认级别是trace

srs_log_file        ./objs/srs.log;  

#制定日志文件的位置。

max_connections     1000; 

#最大连接数

daemon              on; 

#以daemon的方式启动,如果要启动在console,那么需要配置daemon off;并且,需要配置srs_log_tank console;

utc_time            off; 

#是否使用utc时间。如果该值为off则使用本地时间,如果开始使用utc时间。

vhost __defaultVhost__ {   

#默认的vhost,在没有指明vhost的情况,默认使用这个vhost。

}

我配置的srs_kp.conf

注意gop_cache 一定要设置成on,否则切片推流有卡顿

 

# the config for srs to delivery hls

# @see https://github.com/ossrs/srs/wiki/v1_CN_SampleHLS

# @see full.conf for detail config.

 

listen              1935;

max_connections     1000;

daemon              off;

srs_log_tank        console;

http_server {

    enabled         on;

    listen          8080;

    dir             ./objs/nginx/html;

}

vhost __defaultVhost__ {

    dvr {

        enabled             on;

        #配置成时分秒

        dvr_path            ./objs/nginx/html/[app]/[stream]/[15][04][05].flv; 

        dvr_plan            segment;

        dvr_duration        5; #切片长度,这个可以改  e.g. 1 or 3

        dvr_wait_keyframe   on;

    }

    gop_cache   on;

}

 

推流和播放

推流:

./objs/ffmpeg/bin/ffmpeg -i "./doc/source.200kbps.768x320.flv" -vcodec libx264 -vprofile baseline -level 30 -g 60 -vb 800k -strict experimental -acodec aac -ab 96000 -ar 48000 -ac 2 -f flv rtmp://127.0.0.1:1935/live/gongjia

播放:

 

rtmp://172.17.6.96:1935/live/gongjia

查看日志

tail -f  ./objs/srs.log

 

 

好文章,来自【福优学苑@音视频+流媒体】
***【免费下载源码和PPT课件】***
***【在线视频教程】***

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值