最近接到一个朋友的需求, 简单把他的要求说一下.
功能:将摄像头的rtsp裸流转网页直播(提供前后端方案)
延迟要求:2秒内
稳定性要求:较高
性能:
- 后端推拉流及解码要求在i5 4G内存能同时运行5路以上
- 前端要求在chrome上同一标签同时直播5路
因为自己对go语言情有独钟, 先去GitHub溜达了一下, 找了几个go直播项目, 测试了下, 不太理想. 主要是稳定性较差. 耽误了太多时间. 后来想到了Nginx做转发, 再次逛了下GitHub, 发现一个http-flv-moudle, 果断下载测试.
这延时吓死人!
等等, 好像哪里不对.
这张图片是1路推, 5路拉. 为什么时间不一致.
难道每次拉流是先去读缓存?
然后看了下http-flv-moudle文档, 果然在Nginx里有个选项
server {
listen 1935;
application live {
live on;
gop_cache on; #罪魁祸首就是这货
}
}
果断改成off. 取消掉缓存. 带来的影响就是第一次连接时加载时间变长,没有秒开的感觉了,废话没有缓存了.
然后测试了一下
5路推, 5路拉, 延时2秒. 简单做了压测, 10拉, 没有压力, 还是2秒. 得, 收工. 最后附上nginx负载图