FLV 的另類實現方法
還有一種方法是通過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,然後再進行重新執行configure、make,最後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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式間通訊的另類實現
- AppBoxFuture(八): 另類的ORM實現APPORM
- 另類SQL拼接方法SQL
- 另類用法 hyperf/session 實現 API tokenSessionAPI
- 修改flashget的另類方法(已修正)
- win電腦快速關機的另類方法
- 敏捷與彈性:迎接新現實的另類投資報告敏捷
- 使用flv.js實現flv格式的監控視訊流播放JS
- 實現類的註冊方法
- 為Linux應用程式排查故障的另類方法Linux
- Win XP系統重新啟動的另類方法(轉)
- [譯]The other ways to detect OllyDbg 檢測OllyDbg的另類方法
- [python]python三元表示式另類實現方式Python
- vue3.0 載入json的“另類”方法(非ajax)VueJSON
- Win7 CreateRemoteThread 另類使用方法Win7REMthread
- 另類SQL優化SQL優化
- [原創]介面、類、抽象類、物件的另類解釋抽象物件
- 解決 "Script Error" 的另類思路Error
- iOS另類的記憶體管理iOS記憶體
- ORACLE FLASHBACK的另類應用薦Oracle
- 作業系統中轉換身份的另類方法(runas)(轉)作業系統
- Flutter混合開發——一種另類卻高效的的原生View嵌入方法FlutterView
- 另類 RobotFramework 使用法Framework
- ThinkPHP之另類RBAC效果PHP
- ZendFramework自動載入類的實現方法Framework
- Python裝飾器的另類用法Python
- 【丹臣】優化SQL的另類思考優化SQL
- 《有殺氣童話2》:另類童話世界開啟的另類MMO | 遊戲產品觀察遊戲
- java中介面多個實現類,如何指定實現類,根據子類型別選擇實現方法Java型別
- 另類遠控:木馬借道商業級遠控軟體的隱藏執行實現
- 另類網路層設計
- session_cached_cursor另類用途Session
- OpenBSD――另類安裝法(轉)
- HttpServletRequest中的方法是哪個類實現的?HTTPServlet
- 一種獲取SAP HANA資料庫表條目數的另類方法資料庫
- Vopt99另類破解實戰錄 (3千字)
- 我的另類秋招 | 掘金技術徵文
- C/C++中的字串另類連線C++字串