nginx模块 ngx_http_flv_module、ngx_http_mp4_module

2018-07-17 16:34:18

ngx_http_flv_module 模块提供了对 flv 视频的伪流支持。编译的时候带上 --with-http_flv_module。

它会根据指定的 start 参数来指定跳过多少字节,并在返回数据前面附上 FLV 头。

location ~ \.flv$ {
    flv;
}
curl localhost/index.flv?start=10

该请求的意思是,从视频文件 index.flv 第10个字节开始读取返回,并在返回的数据上附上 FLV 头。


ngx_http_mp4_module 模块提供了对 MP4 视频的播放支持,相关的扩展名 .mp4 .m4v .m4a。

start 参数指定开始播放的秒数,end指定结束的秒数比如

http://www.freecls.com/test.mp4?start=22.33&end=33.33

基于 H.264 格式的mp4视频能随意拖动播放的原理是,该文件会存储元数据(moov atom),该元数据里存放了索引。为了开启回放,播放器首先需要读取元数据,如果元数据在文件的前面,那么 nginx 只是简单的返回给播放器就行,如果放在视频文件后面,那么 nginx 必须读取整个文件并把元数据放在文件前面,相当耗资源,所以如果元数据在文件后面,最好自己手动先把元数据放到文件前面后再放到 nginx 目录中。

如果播放器支持 字节范围请求 Range,那么无需此模块。

Syntax: mp4;
Default: —
Context: location

开启。

Syntax: mp4_buffer_size size;
Default: mp4_buffer_size 512K;
Context: http, server, location

设置初始缓冲大小

Syntax: mp4_max_buffer_size size;
Default: mp4_max_buffer_size 10M;
Context: http, server, location

元数据处理不能超过此大小,否则500错误。

Syntax: mp4_limit_rate on | off | factor;
Default: mp4_limit_rate off;
Context: http, server, location

响应传输限制,on 即为 factor = 1.1,最终结果为 bitrate * factor。

Syntax: mp4_limit_rate_after time;
Default: mp4_limit_rate_after 60s;
Context: http, server, location

初始多少秒不限速。

location /video/ {
    mp4;
    mp4_buffer_size       1m;
    mp4_max_buffer_size   5m;
    mp4_limit_rate        on;
    mp4_limit_rate_after  30s;
}


 备注

1.测试环境centos7 64位,nginx版本为 1.14.0。
2.读者也可以参考官方文档 nginx documentation
3..原文地址http://www.freecls.com/a/2712/bd


©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。