SRS-HLS服务的部署

SRS-HLS服务的部署

直播服务器simple-rtmp-server支持rtmp和hls两种流的分发。对于rtmp的配置很简单,默认configure进行编译安装后,执行./objs/srs -c conf/srs.conf就行了。
但是配置hls就比较麻烦了,要分为使用nginx作为hls分发服务,还是使用自带http服务器来分发。而且要根据本机http端口的占用情况来修改配置的hls的端口。不过配置完成后就可以同时支持rtmp和hls流的播放。
下面分别给出范例说明,主要内容参考自:

一、SRS-http内嵌服务器
SRS内嵌了http服务器,支持分发hls流和文件。这里使用SRS分发RTMP和HLS流,不依赖于外部服务器。
注意:SRS内嵌的HTTP服务器是实验性的,不推荐使用。

假设服务器的IP是:192.168.1.170

1、获取并编译SRS。
git clone https://github.com/ossrs/srs
cd srs/trunk

./configure --disable-all --with-hls --with-ssl --with-http-server
make
make install

2、编写SRS配置文件。
默认配置文件conf/http.hls.conf的内容如下:

# conf/http.hls.conf
listen 1935;
max_connections 1000;
http_stream {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
vhost __defaultVhost__ {
hls {
enabled on;
hls_path ./objs/nginx/html;
hls_fragment 10;
hls_window 60;
}
}

以上配置中,hls配置就是HLS的配置,主要配置项如下:
  • enabled:是否开启HLS,on/off,默认off。
  • hls_path:HLS的m3u8和ts文件保存的路径。SRS会自动加上app和stream名称。譬如:
对于RTMP流:rtmp://localhost/live/livestream
HLS配置路径:hls_path /data/nginx/html;
那么会生成以下文件:
/data/nginx/html/live/livestream.m3u8
/data/nginx/html/live/livestream-0.ts
/data/nginx/html/live/livestream-1.ts
/data/nginx/html/live/livestream-2.ts
最后的HLS地址为:http://localhost/live/livestream.m3u8
备注:hls_path必须存在,srs只会自动创建${hls_path}下的app的目录。

  • hls_fragment:秒,指定ts切片的最小长度。实际上ts文件的长度由以下公式决定:
ts文件时长 = max(hls_fragment, gop_size)
hls_fragment:配置文件中的长度。譬如:5秒。
gop_size:编码器配置的gop的长度,譬如ffmpeg指定fps为20帧/秒,gop为200帧,则gop_size=gop/fps=10秒。
那么,最终ts的时长为max(5, 10) = 10秒。这也是为什么有些流配置了hls_fragment,但是ts时长仍然比这个大的原因

  • hls_window:秒,指定HLS窗口大小,即m3u8中ts文件的时长之和,超过总时长后,丢弃第一个m3u8中的第一个切片,直到ts的总时长在这个配置项范围之内。即SRS保证下面的公式:
hls_window >= sum(m3u8中每个ts的时长)

3、启动SRS。
./objs/srs -c conf/http.hls.conf
如果使用内存保存ts而不是创建hls_path,使用这个配置启动srs:
./objs/srs -c conf/ram.hls.conf

备注:
  • 请确定srs-http-server已经启动,可以访问http://192.168.1.170:8080/nginx.html,若能看到nginx is ok则没有问题。
  • 实际上提供服务的是SRS,可以看到响应头是Server: SRS/0.9.51之类。

4、启动ffmpeg推流。
使用FFMPEG命令循环推流:
for((;;)); do \
./ffmpeg -re -i ./tset.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.1.170/live/livetest; \
sleep 1; \
done

以上命令生成的结果:
FMS URL: rtmp://192.168.1.170/live
Stream: livetest

生成的用于播放的流地址为:
RTMP流地址为:rtmp://192.168.1.170/live/livetest
HLS流地址为: http://192.168.1.170:8080/live/livetest.m3u8

5、问题
RTMP流能看,HLS看不了
  • 确认srs-http-server启动并且可以访问:nginx is ok页面能访问。
  • 确认m3u8文件能否下载:浏览器打开http://192.168.1.170:8080/live/livetest.m3u8。若不能下载,请检查网络和防火墙设置。
  • 若m3u8能下载,可能是播放器的问题,使用vlc或ffplay播放地址:http://192.168.1.170:8080/live/livetest.m3u8。
  • 若还不行,有可能是编码问题


二、SRS-nginx服务器


1、获取并编译SRS。
这里获取srs同上,编译配置需要修改为:

./configure --disable-all --with-hls --with-ssl --with-nginx
make
make install

2、启动分发hls(m3u8/ts)的nginx。
sudo ./objs/nginx/sbin/nginx
备注:请确定nginx已经启动,可以访问nginx,若能看到nginx is ok则没有问题。

3、编写SRS配置文件。
默认配置文件conf/hls.conf,内容如下:

# conf/hls.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
hls {
enabled on;
hls_path ./objs/nginx/html;
hls_fragment 10;
hls_window 60;
}
}

4、启动SRS。
./objs/srs -c conf/hls.conf

5、启动推流编码器。
命令同上,

RTMP流地址为:rtmp://192.168.1.170/live/livetest
注意,hls流地址的端口视nginx的端口而定,如果不是80,需要加上自定义端口号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值