一、环境配置
Nginx : Tengine(2.1.1)/ Nginx(1.6.2)
二、安装步骤
1、下载/ngx_http_enhance_mp4_module
执行命令:
cd /data/wwwroot/server/nginx_module
git clone https://github.com/whatvn/ngx_http_enhance_mp4_module
cd ngx_http_enhance_mp4_module
2、添加mp4模块
dso_tool --add-module=/data/wwwroot/server/nginx_module/ngx_http_enhance_mp4_module
(dso_tool命令是Tengine的动态加载模块工具)
通过上面的命令添加完毕之后,会在tengine的安装目录下的module文件夹下生成ngx_http_enhance_mp4_module文件
3、编辑nginx的nginx.conf文件
在dso节点中增加如下配置
dso {
load ngx_http_enhance_mp4_module.so;
}
4、查看是否安装成功
使用nginx -V查看安装的模块,如果出现了这个图,则说明模块已经成功的安装,否则,请检查原因
5、添加访问配置
配置一个host文件,比如www.a.com.conf,其内容如下
server {
listen 80;
listen 443 ssl;
server_name www.a.com;
#错误日志和访问日志的路径配置
access_log /data/wwwlogs/nginx/access_log/www.a.com_nginx.log combined;
error_log /data/wwwlogs/nginx/error_log/www.a.com_errr_log;
#增加重写规则
index index.html index.htm index.php;
include /usr/local/tengine/conf/rewrite/other.conf;
#项目的路径
root /data/wwwroot/resource/video;
#https相关的配置
ssl_certificate /data/wwwroot/ssl_file/www.a.com/v.chained.crt;
ssl_certificate_key /data/wwwroot/ssl_file/www.a.com/www.a.com.key;
# limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
charset utf-8;
#所有的mp4文件的自动解析
location ~ \.mp4$ {
enhance_mp4;
fix_mp4 on;
enhance_mp4_buffer_size 1m;
enhance_mp4_max_buffer_size 50m;
}
}
6、访问文件
比如服务器上有1.mp4文件,则访问http://www.a.com/1.mp4,如果视频能够正常播放,说明配置搭建成功
三、学到的知识点
1、使用Tengine的dso_tool来动态添加模块
2、视频文件的编码格式有h.264 h.265 vpc等,音频格式有aac pcm等格式
3、ngx_http_enhance_mp4_module无法解码高于h.264格式的编码
四、踩坑点
1、因为ngx_http_enhance_mp4_module无法解码高于h.264这种类型是mp4文件,所以在配置的过程中一直没办法正常的播放视频,解决的办法是将原始的视频使用格式工厂将视频文件转码为avc格式。
2、网上很多的解决办法是使用nginx_mod_h264_streaming-2.2.7.tar.gz这个压缩包来配置,但是在一直无法正常的进行编译,同时也无法正常的使用dso_tool命令添加到Tengin的目录下,同时大部分的说法是重新编译nginx,对于已经有线上业务的环境这种做法非常不靠谱,没办法平滑的迁移。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。