关于Nginx配置文件在推流取流时的对应模块作用
前言:
前提知识1):取流地址只是我们从用于管理路面监控视频的DVR、NVR的IP地址,这里只需要知道该地址即可。重点是讲述推流和拉流nginx.conf的关系。
前提知识2):nginx.conf分为许多模块,其中http、rtmp这些可认为大模块,而live、hls、myapp这些称为节点模块,可以是自定义的节点模块。
1 看图分析
1 )推流注意点
先说推流,我们知道,所有的推流地址 都是使用rtmp协议的,所以推流对应nginx的配置文件中只有rtmp模块是有效的。
假设现在nginx.conf配置文件的rtmp端口为1936,若在写推流时省略端口即rtmp://127.0.0.1/live/test,那么此时默认推流至1935而非推至配置的1936。所以此时客户端2在播放(VLC)使用rtmp://192.168.1.66:1936/live/test时(假设该ip为推流的电脑ip),是无法取到对应的视频流数据,要么取流把1936去掉默认取1935,要么推流时加上端口1936即rtmp://127.0.0.1:1936/live/test才能播放。
所以总结推流时:
1)推流时认为在nginx.conf的模块只有rtmp有效。
2)最好必须加上nginx.conf配置上的端口,否则取流时加上nginx.conf的端口反而无法播放。
3)rtmp大模块中可以用已有的节点模块推流,也可以用自定义节点模块推流。例如rtmp://127.0.0.1:1936/live/test、rtmp://127.0.0.1:1936/hls/test、rtmp://127.0.0.1:1936/myapp/test(自定义节点模块)。
2)取流注意点
我们知道,取流时可以用http或者rtmp协议播放。在使用http协议模块里的节点模块不需要注意什么可以直接播放,例如http://192.168.1.66:8080/live/test(假设该ip为推流的电脑ip),http://192.168.1.66:8080/hls/test,只不过需要将rtmp协议和其端口换成http协议和http的端口(前四个字母)。
但是在使用rtmp协议取流播放时,由于hls是基于http协议的,当使用rtmp://192.168.1.66:8080/hls/test播放时是无法播放的,因为不能同时使用rtmp协议和使用http的端口8080播放,nginx服务器无法找到。(注:rtmp://192.168.1.66:1936/hls/test这个好像也不能播放,我忘了,下次有机会在测测)。
而其它已有节点模块和自定义节点模块都是能正常播放的。
例如rtmp://192.168.1.66:1936/live/test、rtmp://192.168.1.66:1936/myapp/test。
总结取流播放时的地址格式写法:
1)非常简单,只需要记住rtmp协议不能与hls节点模块同时存在即rtmp://ip:port/hls/test即可。其余整个nginx.conf的都是能播放的,即http协议里的所有节点模块和rtmp除了hls节点外的所有节点。
2 总结
只需看推流时的三点总结和取流时的一点总结即可。
在写本篇文章时一直被怎么推流和如何用正确的播放地址格式困扰,直到今天遇到问题然后就总结就这样理解透了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)