从SRS如何转换HLS 维基,我们知道SRS在hls_path中生成相应的M3U8播放列表,下面是我的配置文件:
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
vhost __defaultVhost__ {
hls {
enabled on;
hls_path /data/hls-records;
hls_fragment 10;
hls_window 60;
}
}在一种SRS服务器情况下,每个客户端都会播放HLS流访问同一个push SRS服务器,这是可以的。但是在原始集群模式下,有很多SRS服务器,每个流都在其中之一。当客户端播放此HLS流时,我们无法保护它访问正确的源SRS服务器(如果不存在则导致404 http状态代码)。与RTMP和HTTP流不同,SRS使用HTTP特性来重定向正确的源SRS。
为了解决这一问题,我认为以下两种解决办法:
原始srs.conf转发配置如下:
vhost same.vhost.forward.srs.com {
# forward stream to other servers.
forward {
enabled on;
destination 192.168.1.120:1935;
}
}其中,192.168.1.120是后端hls段SRS服务器。
hls_path配置如下:
vhost __defaultVhost__ {
hls {
enabled on;
hls_path /shared_storage/hls-records;
hls_fragment 10;
hls_window 60;
}
}这里'shared_stoarge‘是指nfs/cephfs/pv挂载点。
以上的解决方案在我看来并没有从根本上解决准入问题,我期待着为这种情况找到更可靠的产品解决方案?
发布于 2021-12-20 00:33:02
当您使用OriginCluster时,您必须获得大量要服务的流,有许多编码器可以将流发布到媒体服务器。解决问题的关键是:
因此,据我所知,最好的解决办法是:
现在的问题是:如何将数据从内存/磁盘移动到网络存储集群?
您必须通过Python或Go构建一个服务:
on_hls回调,通知您的服务移动HLS文件。on_publish回调,通知您的服务启动FFmpeg以将RTMP转换为HLS。请注意,FFmpeg应该从SRS边缘提取流,而不是直接从原始服务器提取流。
https://stackoverflow.com/questions/70405004
复制相似问题