nginx模块 ngx_http_flv_module、ngx_http_mp4_module

本文介绍如何使用Nginx的ngx_http_flv_module和ngx_http_mp4_module模块进行视频流服务配置。ngx_http_flv_module支持FLV格式视频流,可根据start参数跳过指定字节数并附加FLV头;ngx_http_mp4_module支持MP4格式视频播放,通过start和end参数指定播放区间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值