- 兼容有无
.flv
后缀模式,如http://live.pingos.io:8088/flv/ice
等价于http://live.pingos.io:8088/flv/ice.flv
。 - 动态挂载点模式,超简配置。
注意:
对于http-flv协议,有些播放器要求必须以.flv
后缀结尾才能正常播放,所以PingOS服务器兼容了有无.flv
后缀的两种模式。
配置
flv_live
Syntax: flv_live [rtmp service port] [app=bind rtmp application] [audio=0|1] [video=0|1]
Context: location
- Desc
http-flv需要在http模块的location里配置。
- app参数:当location与application的名字不同时,需要其后跟 app=xxx 来把location与application绑定起来。如果location与application的名字相同,则无需app=xxx参数绑定。
- audio参数:在flv header里添加音频标志。如果flv header中设置了音频标记,但是flv body中却没有传输音频流只有视频流,播放器可能会尝试等待过久的时间才会开始解码视频帧(首帧显示过慢)。
- video参数:在flv heaer里添加video标志。
必须显示配置
- For example
rtmp { server { listen 1935; application live0 { live on; } application live1 { live on; } } } http { server { listen 80; location flv0 { flv_live 1935 app=live0; } location flv1 { flv_live 1935 app=live1; } location live0 { flv_live 1935; } location live1 { flv_live 1935; } } }
测试
- live0
- rtmp推流地址:
rtmp://ip/live0/stream-name
- http-flv播放地址:
http://ip/live0/stream-name
和http://ip/flv0/stream-name
- rtmp推流地址:
- live1
- rtmp推流地址:
rtmp://ip/live1/stream-name
- http-flv播放地址:
http://ip/live1/stream-name
和http://ip/flv1/stream-name
- rtmp推流地址:
动态挂载点
在生产环境里,尤其是ToB的服务里,很可能需要非常多的application,比较笨的方法是我们在配置文件里一条条配置,这非常不利于管理和扩展。
下面展示如何通过通配符,自动生成application,并且通过http-flv url参数指定挂载点名称。
配置模板
```nginx
rtmp {
server {
listen 1935;
application * {
live on;
}
}
}
http {
server {
listen 80;
location flv {
flv_live 1935;
}
}
}
```
挂载点名称可以随意指定,此处依旧以live0、live1为例进行说明
- live0
- rtmp推流地址:rtmp://ip/live0/stream-name
- http-flv播放地址:http://ip/flv/stream-name?app=live0
- live1
- rtmp推流地址:rtmp://ip/live1/stream-name
- http-flv播放地址:http://ip/live1/stream-name?app=live1