1. 程式人生 > >Nginx 的 RTMP 直播具有統計某頻道線上觀看使用者數量的功能

Nginx 的 RTMP 直播具有統計某頻道線上觀看使用者數量的功能

  http://blog.csdn.net/defonds/article/details/9065591

你的 Nginx 已經有了 RTMP 直播功能的話,如果你還想統計某直播頻道當前觀看使用者量的話,可以加入 with-http_xslt_module 模組。具體步驟如下:

1.檢視原來的引數
/usr/local/nginx/sbin/nginx -V
        輸出中可以得到原來編譯時帶有的引數,比如作者得到:
--user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-http_flv_module --with-http_perl_module --with-mail

        這些引數在我們安裝新模組時仍然有用。
2.下載 nginx-rtmp-module 安裝包
        nginx-rtmp-module-master.zip,最新下載地址:https://github.com/arut/nginx-rtmp-module
        下載後將其解壓縮得到 nginx-rtmp-module-master 目錄。
3.下載 nginx-1.3.8.tar.gz 包
        可以在 http://nginx.org/download/ 找你需要的版本。
        下載後解壓縮得到 nginx-1.3.8 目錄。
4.關閉 nginx
ps - ef | grep nginx

        在程序列表裡找到 master 程序,這是 nginx 的主程序號。
kill -TERM 主程序號
        nginx 被關閉。
5.安裝其他依賴包
yum install pcre-devel
        yum install openssl-devel
        yum install perl-devel perl-ExtUtils-Embed
        yum install gcc
        yum install libxml2 libxml2-devel libxslt libxslt-devel

6.編譯 with-http_xslt_module 模組

        在步驟一得到的一系列引數後增加以下引數:
--with-http_xslt_module --add-module=/home/defonds/nginx-rtmp-module-master
        其中 /home/defonds/nginx-rtmp-module-master 是步驟二得到的目錄。
        切換進入步驟三得到的 nginx-1.3.8 目錄,使用新組合得到的引數列表重新配置:
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-http_flv_module --with-http_perl_module --with-mail --with-http_xslt_module --add-module=/home/defonds/nginx-rtmp-module-master
        然後編譯:
make
        最後替換掉原來的二進位制執行檔案:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
        cp ./objs/nginx /usr/local/nginx/sbin/

7.修改 nginx 配置檔案
        建立一個簡單地 xls 表格檔案 nclients.xsl 用於提取觀看當前頻道的使用者數量,編輯其內容如下:
[html] view plaincopyprint?
  1. <xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  2. <xsl:outputmethod="html"/>
  3. <xsl:paramname="app"/>
  4. <xsl:paramname="name"/>
  5. <xsl:templatematch="/">
  6.     <xsl:value-ofselect="count(//application[name=$app]/live/stream[name=$name]/client[not(publishing) and flashver])"/>
  7. </xsl:template>
  8. </xsl:stylesheet>

        然後將其放在一個目錄中,比如 /home/www。
        修改 nginx 主配置檔案 nginx.conf,新增以下內容:
[html] view plaincopyprint?
  1. location /stat {  
  2.     rtmp_stat all;  
  3.     allow 127.0.0.1;  
  4. }  
  5. location /nclients {  
  6.     proxy_pass http://127.0.0.1/stat;  
  7.     xslt_stylesheet /home/www/nclients.xsl app='$arg_app'name='$arg_name';  
  8.     add_header Refresh "3; $request_uri";  
  9. }  

8.重啟 nginx
/usr/local/nginx/sbin/nginx
        No news is good news,終端沒有輸出證明啟動成功。否則參照終端給的異常資訊檢查主配置檔案。
        根據直播頻道訪問以下地址:
http://直播伺服器IP/nclients?app=app應用名&name=頻道名
        有返回結果表示 with-http_xslt_module 模組安裝成功。返回結果就是當前頻道的觀看人數。