写在前面
啊这,折腾这个的原因是因为有很多手机的直播平台不提供rtmp地址,这意味着基本和obs等工具告别了。我的思路是把电脑的屏幕投到手机上,这很简单,但是这仍然和obs沾不到边,直到我看见一个obs的插件——虚拟摄像头(OBSVirtualCam),把OBS输出源作为一个摄像头,手机上看电脑上的摄像头就可以了(我用的向日葵),但是这个方法延迟极其感人,码率。。。。基本没有。这个方法废弃。
明确一下目标:我希望obs推流的画面和声音能在手机上显示,且延迟不能太高,这就有了局域网推流的方案。
1.NGINX部分
配置rtmp
首先需要带有rtmp模块的Nginx分支,链接附上↓
nginx1.7.11.3Gryphon
如果你的环境稍复杂,且已经有一个在使用的nginx实例,那可以自行添加rtmp模块,这里推荐十三月大佬的文章↓
http://auan.cn/server/1716.html
本文在windows环境下操作.
安装好nginx后,打开配置文件,这里为/conf/nginx-win.conf,我们需要修改两处地方:
1.在第18行后添加:
rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
record off;
allow play all;
}
}
}
其中listen 1935为rtmp监听的端口,可自定义。
2.在第76行"server_name"后添加:
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
启动nginx
在目录里使用:
nginx.exe -c conf/nginx-win.conf
来启动nginx并指定配置文件.
为了方便在桌面上就能打开nginx,可以写个批处理,这里是例子:
chcp 65001
@echo 启动nginx [live推流端口1935]
d:
::进入D盘
cd nginx1.7.11.3
::进入Nginx所在目录
Timeout /T 10
nginx.exe -c conf/nginx-win.conf
::启动Nginx并指定配置文件
至此,nginx部分告一段落。
2.OBS部分
进obs设置→推流(stream)
如图:
其中,服务器的写法为
rtmp://本机ip:上文设置监听的端口/live
(写127.0.0.1也没啥毛病),密钥自定义。
保存之后就可以点击OBS的推流了。
3.拉流部分(VLC)
流推好了,我们需要一个接收端,这里推荐VLC。
VLC支持绝大部分平台,这里以windows为例。
这里rmtp的接收地址写法:
rtmp://推流的PC地址:上文设置的监听端口/live/上文自定义的密钥
效果图
参考文献
https://blog.csdn.net/qq_21529143/article/details/98639407
http://auan.cn/server/1716.html
本文链接:https://xenwayne.top/tech/97.html
CC-BY-NC-SA 4.0
请问通过这种方式推流你的延迟大概有几秒?我在局域网内,有3-4秒左右...
我就笔记本电脑,obs推流到livego, 已经调过分辨率,码率,vlc 接收延时大概8秒。 本来想推流rtmp,然后用yolo 做目标检测的。 现在8秒延时,没法用,还在找办法
基本是实时的,或许你应该检查一下OBS的码率设置是否合理,是不是开了回放缓存。
还可以考虑是不是接收端VLC本身缓存的问题,换一个接收端试试。
能分享下obs和vlc配置吗,或者obs有安装什么降低延迟的插件吗?
找了一天原因,同一台机器,试了rtmp和udp协议,换了VLC、potplayer和obs一个发一个收接收数据,码率也很低,也没开回放缓存,都不行。
人麻了
解决了吗想问一下,我试了一下也有3-4秒延迟
实在不行….放弃了
有用,虽然说还是要建rtmp服务器
可以搞成分布式XD