欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

nginx 0.8.54/1.0.0 在cygwin环境下的编译(包括 nginx_mod_h264_streaming-2.2.7)

程序员文章站 2023-11-15 09:10:40
nginx 0.8.54/1.0.0 在cygwin环境下的编译(包括 nginx_mod_h264_streaming-2.2.7)...
  1. 一、概述:
    由于测试需要在win平台上进行.264的mp4文件的拖动功能,而nginx windows官方版本不包含nginx_mod_h264_streaming-2.2.7模块,所以才有了本文。

    二、准备:
    1、cygwin

    代码如下:
    2、nginx 0.8.54 /1.0.0(在这里yaosansi以0.8.54版本为示例)

    代码如下:
    3、the h264 streaming module for nginx (version 2)

    代码如下:
    三、配置和编译nginx
    1、.configure脚本

    代码如下:
    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/1.0.0 在cygwin环境下的编译(包括 nginx_mod_h264_streaming-2.2.7)
    nginx-0.8.54/src/os/unix/ngx_process_cycle.c把setgid和setuid相关逻辑判断注释掉 (883-903)
    nginx 0.8.54/1.0.0 在cygwin环境下的编译(包括 nginx_mod_h264_streaming-2.2.7)
    最后重新编译运行,才成功了
  2. 当引用外部的目录时,需要用cygwin格式的路径,如:root /cygdrive/d/work/git/python_mail/web;
3、提取相关文件

编译后,将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命令来解析。

代码如下:

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/
相关标签: Nginx cygwin