0.背景
1.知识
1935 端口
上文我们说到 通过 docker 可以简单快捷的启动一个srs服务,指令如下:
docker run --rm -p 1935:1935 -p 1985:1985 -p 8080:8080 ossrs/srs:3
留意到上面映射了 1935 端口,1935 端口是 RTMP 协议的数据交换端口。
rtmp协议默认使用的是1935端口。
而在播放rtmp,的URL时,比如这样的
rtmp://localhost/live/livestream
它也会在 1935 端口上工作。
标准的 RTMP 网址
HTTP | Schema | Host | Port | App | Stream |
---|---|---|---|---|---|
rtmp://192.168.1.10:1935/live/livestream | rtmp | 192.168.1.10 | 1935 | live | livestream |
Schema:协议头,HTTP为HTTP或HTTPS,RTMP为RTMP/RTMPS/RTMPE/RTMPT等众多协议,还有新出的RTMFP。
Host:主机,表示要连接的主机,可以为主机DNS名称或者IP地址。商用时,一般不会用IP地址,而是DNS名称,这样可以用CDN分发内容(CDN一般使用DNS调度,即不同网络和地理位置的用户,通过DNS解析到的IP不一样,实现用户的就近访问)。
Port:端口,RTMP默认为1935。
App:RTMP的Application(应用)名称,可以类比为文件夹。以文件夹来分类不同的流,没有特殊约定,可以任意划分。
Stream:RTMP的Stream(流)名称,可以类比为文件。
简单来说,你的 RTMP 流媒体地址应该是像这样的
rtmp://yourdomain.com/app/stream
NO Vhost
上面的网址,是没有使用 Vhost (即默认Vhost) 的情形。 实际使用中也可用启动 Vhost 来隔离用户。
Vhost 的主要应用场景包括:
一个分发网络支持多个客户:譬如CDN,一个分发网络中,有N个客户公用一套流媒体系统,如何区分用户,计费,监控等等?通过app么?大家可能都叫做live之类。最好是通过各自的域名。
不同的应用配置:譬如FMLE推上来的流是h264+mp3,可以将音频转码后放到其他的vhost分发hls,这样接入h264+mp3的vhost就不用切hls。
总之,vhost作为应用配置的单元,能隔离客户,应用不同的配置。
其实,vhost大多数用户都用不到,而且不推荐用,有点复杂。一般的用户用app就可以了。因为vhost/app/stream,只是一个分类方法而已;vhost需要在配置文件中说明,app/stream都不需要配置。
3.参考
https://github.com/ossrs/srs/wiki/v3_CN_RtmpUrlVhost
https://www.cnblogs.com/linhaostudy/p/11363550.html
网友评论