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