之前说过,SRS官方建议在源站开启切片等工作!!!
修改源站 172.20.1.46和47的srs.conf文件
hls {
enabled on;
hls_fragment 10;
hls_window 60;
hls_path ./objs/nginx/html;
hls_m3u8_file [app]/[stream].m3u8;
hls_ts_file [app]/[stream]-[seq].ts;
}
transcode {
enabled on;
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
engine ff {
enabled on;
vcodec copy;
acodec libfdk_aac;
aparams {
}
output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine];
}
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
#[vhost] 当前http live stream 的虚拟主机,该变量为可选项
#[app] 当前http live stream的app
#[stream] 当前http live stream的流
#通过设置不同后缀来实现不同输出不同视频流,可以为:.flv、.ts、.mp3、.aac
#播放地址为:http://ip:port/live/livestream.flv,注:此处端口为http_server中设置的端口
}
cluster {
#集群的模式,对于源站集群,值应该是local。
mode local;
#是否开启源站集群
origin_cluster on;
#源站集群中的其他源站的HTTP API地址
coworkers 172.20.1.47:1985;
}
重启两台源站服务器
cd /root/srs/trunk/etc/init.d/
./srs restart
OBS推流 rtmp://172.20.1.44:1935/live/1234 正常
VLC拉流 rtmp://172.20.1.41:1935/live/1234 正常(边缘任意一台都可以)
Safari浏览器播放 http://172.20.1.46:8080/live/1234.m3u8 正常(源站播放)
Safari浏览器播放 http://172.20.1.46:8080/live/1234.flv 正常(源站播放)
Safari浏览器播放 http://172.20.1.41:8080/live/1234.flv 正常(边缘任意一台播放)
Safari浏览器播放 http://172.20.1.41:8080/live/1234.m3u8 异常(边缘任意一台播放)
在边缘的配置里加入和源站一样的配置(好奇怪,根据官方的说法,是边缘只有播放RTMP或FLV的时候,才会进行切片,我也尝试了,确实是播放FLV,HLS才能正常播放)
hls {
enabled on;
hls_fragment 10;
hls_window 60;
hls_path ./objs/nginx/html;
hls_m3u8_file [app]/[stream].m3u8;
hls_ts_file [app]/[stream]-[seq].ts;
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
hstrs on;
#[vhost] 当前http live stream 的虚拟主机,该变量为可选项
#[app] 当前http live stream的app
#[stream] 当前http live stream的流
#通过设置不同后缀来实现不同输出不同视频流,可以为:.flv、.ts、.mp3、.aac
#播放地址为:http://ip:port/live/livestream.flv,注:此处端口为http_server中设置的端口
}
Safari浏览器播放 http://172.20.1.45/live/1234.m3u8 正常(nginx负载)
Safari浏览器播放 http://172.20.1.45/live/1234.flv 正常(nginx负载)
下一篇是解决nginx播放RTMP格式的配置。