FLV 的另類實現方法

nginx_web發表於2012-07-12

 

 

    還有一種方法是通過nginx_mod_h264_streaming來實現的,我們看一下。

 

下載nginx_mod_h264_streaming模組

 

[root@flv ~]wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz

[root@flv ~]# tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz

   

修改Makefile

 

可能需要修改Makefile檔案,根據實際情況修改:

 

[root@mail nginx_mod_h264_streaming-2.2.7]# vi Makefile

 

# vim:noexpandtab:sw=2 ts=2

 

.PHONY: all dist install clean

 

HOME=$(shell echo ~)

PWD=$(shell pwd)

#NGINX=$(HOME)/nginx-0.8.29/

#NGINX=$(HOME)/nginx-0.7.33/

 NGINX=/root/nginx-1.0.2/

 

VERSION=`./version.sh`

DIST_NAME=nginx_mod_h264_streaming-$(VERSION)

 

all:

        cd $(NGINX) && ./configure --sbin-path=/usr/local/sbin --add-module=/root/nginx_mod_h264_streaming-2.2.7 --with-debug --with-http_flv_module

        make --directory=$(NGINX)

 

……//省略

 

注意黑體字部分,它使用了HttpFlvStreamModule模組,即--with-http_flv_module引數

 

編譯安裝

 

[root@flv nginx-1.0.2]# ./configure  --prefix=/usr/local/nginx-1.0.2-h264-flv   --add-module=/root/nginx_mod_h264_streaming-2.2.7

[root@flv nginx-1.0.2]#make

[root@flv nginx-1.0.2]#make install

 

如果在configure過程中出現以下錯誤:

 

/root/nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c: In function ‘ngx_streaming_handler’:

/root/nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c:158: error: ‘ngx_http_request_t’ has no member named ‘zero_in_uri’

make[1]: *** [objs/addon/src/ngx_http_h264_streaming_module.o] Error 1

make[1]: Leaving directory `/root/nginx-0.8.54'

make: *** [build] Error 2

 

 

那麼將src/ngx_http_streaming_module.c檔案中以下程式碼刪除或者是註釋掉就可以了:

 

/* TODO: Win32 */

if (r->zero_in_uri)

{

return NGX_DECLINED;

}

   

    如果你沒有對這個檔案做個更改,那麼應該在原始碼的第157-161行。這個問題是由於版本原因引起,在此不再討論。

  

修改完之後,記得先執行make clean,然後再進行重新執行configuremake,最後make install

 

nginx_mod_h264_streaming模組的用法

 

    另外,我們再看一下src/ngx_http_streaming_module.c這個檔案,看以下部分:

 

[root@flv nginx_mod_h264_streaming-2.2.7]# vi  src/ngx_http_streaming_module.c

 

 

#if 0

/* Mod-H264-Streaming configuration

 

server {

  listen 82;

  server_name  localhost;

 

  location ~ \.mp4$ {

    root /var/www;

    mp4;

  }

}

 

*/

 

/* Mod-Smooth-Streaming configuration

 

server {

  listen 82;

  server_name localhost;

 

  rewrite ^(.*/)?(.*)\.([is])sm/[Mm]anifest$ $1$2.$3sm/$2.ismc last;

  rewrite ^(.*/)?(.*)\.([is])sm/QualityLevels\(([0-9]+)\)/Fragments\((.*)=([0-9]+)\)(.*)$ $1$2.$3sm/$2.ism?bitrate=$4&$5=$6 last;

 

  location ~ \.ism$ {

    root /var/www;

    ism;

  }

}

*/

#endif

   

新增配置

 

    在這個原始碼檔案中嵌入了該模組的用法,注意黑體字部分,因此我們的配置檔案應該這麼寫:

 

server {

 listen       80;

 server_name  192.168.1.105;

 root    html;

 limit_rate_after 5m;   

 limit_rate 512k;        

index   index.html;

 location ~ \.flv$ {

    root /var/www/flv;

  mp4;

} 

location ~ \.mp4$ {

    root /var/www/mp4;

    mp4;

  }

 

}

   

訪問測試

   

啟動Nginx,訪問http://flv.xx.com/player.swf?type=http&file=4315.mp4

 

 

    如果我們在執行configure時使用了--with-http_flv_module選項,例如:

 

[root@flv nginx-1.0.2]# ./configure  --prefix=/usr/local/nginx-1.0.2-mp4-flv   --add-module=/root/nginx_mod_h264_streaming-2.2.7 --with-http_flv_module

   

    那麼在Nginx的配置檔案中可以這麼配置:

 

 location ~ \.flv$ {

    root /var/www/flv;

  flv;

}  

location ~ \.mp4$ {

    root /var/www/mp4;

    mp4;

  }

   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-735288/,如需轉載,請註明出處,否則將追究法律責任。

相關文章