nginx 0.8.54/1.0.0 在cygwin环境下的编译(包括 nginx_mod_h264_streaming-2.2.7)
发布时间:2011-07-08 13:41:24 作者:佚名
我要评论
由于测试需要在WIN平台上进行.264的MP4文件的拖动功能,而nginx windows官方版本不包含nginx_mod_h264_streaming-2.2.7模块,所以才有了本文。
- 一、概述:
由于测试需要在WIN平台上进行.264的MP4文件的拖动功能,而nginx windows官方版本不包含nginx_mod_h264_streaming-2.2.7模块,所以才有了本文。
二、准备:
1、cygwin http://www.cygwin.com/setup.exe复制代码代码如下:
安装库
gcc g++
zlib 库 (gzip 模块需要)
pcre 库 (rewrite 模块需要 )
openssl库 (ssl模块需要)
提示:国外下载库速度较慢,可以使用网易提供的开源站下载
http://mirrors.163.com/cygwin/
2、nginx 0.8.54 /1.0.0(在这里yaosansi以0.8.54版本为示例)复制代码代码如下:
cd ~
wget http://nginx.org/download/nginx-0.8.54.tar.gz
wget http://nginx.org/download/nginx-1.0.0.tar.gz
3、the H264 Streaming Module for Nginx (version 2)复制代码代码如下:
cd ~
wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz
改动 ngx_http_h264_streaming_module.c,将以下内容全部移除或注释掉,否则会遇到 error: 'ngx_http_request_t' has no member named 'zero_in_uri'的错误提示
/* TODO: Win32 */ if (r->zero_in_uri) { return NGX_DECLINED; }
三、配置和编译Nginx
1、.configure脚本复制代码代码如下:
./configure \
--prefix=. \
--sbin-path=nginx \
--conf-path=conf/nginx.conf \
--pid-path=logs/nginx.pid \
--error-log-path=logs/error.log \
--http-log-path=logs/access.log \
--http-client-body-temp-path=client/ \
--http-proxy-temp-path=proxy/ \
--http-fastcgi-temp-path=fastcgi/ \
--with-cc-opt="-D FD_SETSIZE=4096" \
--with-debug \
--with-mail_ssl_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_flv_module \
--add-module=../nginx_mod_h264_streaming-2.2.7
make && make install
2、在编译过程中,注意事项:(引用 :http://www.tech126.com/cygwin-nginx/)
1、prefix的选项,如果我们指定–prefix=/cygdrive/d/nginx,那么最后脱离Cygwin环境运行,会发现root无法指向其它磁盘上的目录,所以这里使用了相对路径,而且指定了可执行文件nginx在根目录下,而不是默认的sbin/nginx
2、FD_SETSIZE=4096,网上都说了,是将select模式的最大worker_connections加大,如果不加此参数将可能出现以下的错误提示,
[emerg] 2496#0: the maximum number of files supported by select() is 64的错误提示,这表示FD_SETSIZE的值比nginx配置文件中worker_connections指令所指定的值,你可以把nginx.conf里的worker_connections选项改小一些,比如44,加了–with-cc-opt=”-DFD_SETSIZE=4096”后就不会碰到这问题
3、编译mod_passport之前,最好执行dos2unix.exe mod_passport/config转换一下格式
4、编译mod_passport时,会报错:cc1: warnings being treated as errors,需要修改objs/Makefile文件,把其中的-Werror删除即可
5、编译成功后,在Cygwin下运行正常,但如果要脱离Cygwin,需要从cygwin/bin下拷贝cygwin1.dll,cyggcc_s-1.dll,cygz.dll,cygcrypto-0.9.8.dll,cygssl-0.9.8.dll,cygpcre-0.dll,cygcrypt-0.dll这几个dll到nginx目录下
6、最后,不使用Cygwin,在普通Dos下运行nginx时,会报错:emerge: getpwnam("nobody") fail。这也是最令我郁闷的一个错误了,看了网上很多人的帖子,似乎都很顺利就成功了,但用我的Cygwin编译出来的nginx,就一直报这个错误,尝试不加第三方模块,指定user为本机的administrator,依然报错…郁闷了很久之后,最后还是找到nginx源码中相关逻辑,做如下修改:
nginx-0.8.54/src/core/nginx.c,把getpwnam和getgrnam相关逻辑判断注释掉 (1022-1044)
nginx-0.8.54/src/os/unix/ngx_process_cycle.c把setgid和setuid相关逻辑判断注释掉 (883-903)
最后重新编译运行,才成功了 - 当引用外部的目录时,需要用cygwin格式的路径,如:root /cygdrive/d/work/git/python_mail/web;
编译后,将nginx.exe及从cygwin/bin下拷贝cygwin1.dll,cyggcc_s-1.dll,cygz.dll,cygcrypto-0.9.8.dll,cygssl-0.9.8.dll,cygpcre-0.dll,cygcrypt-0.dll这几个dll到nginx目录下,从nginx windows版 拷贝conf、html、logs到nginx目录里。
四、设置nginx,进行测试
1、配置nginx.conf,支持视频拖放
将MP4文件的请求由MP4命令来解析。
复制代码
代码如下:location ~ \.mp4$ {
mp4;
}
2、配置nginx.conf其它项,启动NGINX,进行测试
'http://www.yaosansi.com/video.mp4?start=15&end=45'. 从第15秒开始访问30秒到第45秒结束(注意:该时间如果不是关键帧在有些播放器会出现错误或无法播放。)对于不支持& 符号的播放器需要使用URL重写来解决。
参考:
http://h264.code-shop.com/trac
http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Nginx-Version2
http://h264.code-shop.com/trac/wiki/VirtualVideoClipUrlRewrite
http://wiki.nginx.org/InstallOptions
http://h264.code-shop.com/trac/discussion/1/133?discussion_action=quote;
http://www.tech126.com/cygwin-nginx/
相关文章

网络工程师必备的6款配置文件编辑神器:替代Notepad++!
本期文章介绍了六种网工必备工具,这些工具是网络工程师日常工作中必不可少的,也是那些立志成为网络工程师的人应该熟悉的2026-04-13
首个版本v1.111已上线! VS Code开启周更狂飙模式
026年3月10日,微软宣布将Visual Studio Code(VS Code)更新节奏从月更提速至周更,并发布首个周更版本v1.1112026-03-11
还在手动打开浏览器、点击按钮、检查控制台报错?太累了!现在,最新的VS Code 1.110中AI可以直接调试浏览器2026-03-10
今天带大家来共同学习VC++6.0无法正常运行怎么办?下面就是详细完整的操作步骤,快跟小编一起来学习一下2026-02-27
vscode调试c代码始终找不到exe可执行文件的详细及解决办法
在 VS Code 中调试 C++ 项目时,常见报错:“无法启动调试会话:找不到可执行文件”,这个问题问题通常是由于环境配置不当、缺少编译步骤、路径设置错误、或是launch.json2026-02-27
vscode入门! 小白都能看懂的VS Code保姆级级使用教程
相对于其它前端工具来说,VSCode显得更加的流畅,今天就将我的学习经历和大家分享一下,希望可以帮助到有需要的人2026-02-27
2026年真正值得装、用得上、不鸡肋的 VSCode 插件,其实没那么多——挑10个“神级”不难,但得是每天打开就用、关掉就难受的那种2026-02-10
VS Code 和 VSCodium怎么选? vscode 和 vscodium之间的区别
咱们今天就来聊聊 Visual Studio Code (VS Code) 和 VSCodium的相似与区别,详细请看下文介绍2026-01-10
如何启用.NET Framework3.5? 一键安装net3.5解决软件依赖问题
你是否曾在安装某些软件时遇到过“需要.NET Framework 3.5”的提示?实,只需要几步简单的操作,你就可以轻松解决这个问题2025-10-28
在软件开发过程中,重构是一个非常重要的环节,重构可以提高代码的可读性、可维护性和可扩展性,使代码更加健壮和易于理解,本文将介绍如何使用 VSCode 进行 Java 代码重构2025-09-20








最新评论