Rtmp/Hls直播、點播服務器部署與配置

  測試使用的系統爲CentOS7.3、全部文章中涉及到的包打包在如下地址:html

連接:http://pan.baidu.com/s/1nuF3gLV 密碼:fo8qnginx

 

1. Nginx-Rtmp-Module 安裝git

    1). 安裝依賴包
        yum -y install gcc glibc glibc-devel make nasm pkgconfig openssl-devel expat-devel gettext-devel libtool perl-Digest-SHA1.x86_64web

    2).  yum 安裝相關工具包及 ffmpeg 依賴包
       yum -y install git zlib pcre opensslapp

    3). 手動編譯安裝工具包和依賴包
        a). yadmi
            # tar xzvf yamdi-1.9.tar.gz
            # cd yamdi-1.9
            # make && make install
            # cd ..ide

        b). yasm
            # tar xzvf yasm-1.3.0.tar.gz
            # cd yasm-1.3.0
            # ./configure
            # make && make install
            # cd ..工具

        c). x264
            # tar -xjvf x264.tar.bz2
            # cd x264-snapshot-20170111-2245
            # ./configure --enable-shared
            # make && make install
            # cd ..post

        d). lame
            # tar xzvf lame-3.99.5.tar.gz
            # cd lame-3.99.5
            #./configure --enable-nasm
            # make && make install
            # cd ..測試

        e). faad2
            # tar zxvf faad2-2.7.tar.gz
            # cd faad2-2.7
            # ./configure
            # make && make install
            # cd ..ui

        f). faac
            # tar zxvf faac-1.28.tar.gz
            # cd faac-1.28
            # ./configure
            # make && make install
            # cd ..

        g). xvid
            # tar zxvf xvidcore-1.3.3.tar.gz
            # cd xvidcore/build/generic
            # ./configure
            # make && make install
            # cd ..

        h). ffmpeg
            # tar -xjvf ffmpeg-3.2.4.tar.bz2
            # cd ffmpeg-3.2.4
            # ./configure  --prefix=/opt/ffmpeg/ --enable-version3 --enable-libvpx --enable-libmp3lame  --enable-libvorbis --enable-libx264 --enable-libxvid --enable-shared --enable-gpl --enable-postproc--enable-nonfree  --enable-avfilter --enable-pthreads
            # make && make install
            # cd ..

        i). 修改/etc/ld.so.conf以下:
            include ld.so.conf.d/*.conf
            /lib
            /lib64
            /usr/lib
            /usr/lib64
            /usr/local/lib
            /usr/local/lib64
            /opt/ffmpeg/lib
            # ldconfig

    4). 安裝 Nginx
        # tar zxvf nginx-1.9.9.tar.gz
        # unzip nginx-rtmp-module-master.zip
        # tar zxvf openssl-1.0.2k.tar.gz
        # cd nginx-1.9.9
        # ./configure --add-module=../nginx-rtmp-module-master --without-http_rewrite_module --with-openssl=../openssl-1.0.2k
        # make & make install
        # cd ..


           
2. nginx.conf配置

    # nginx.conf Start
    worker_processes  1;                    #  nginx對外提供 web 服務時的 worker 進程數

    error_log  logs/error.log debug;        # 錯誤日誌路徑

    pid        logs/nginx.pid;                #  pid 文件路徑
    worker_rlimit_nofile 51200;                #  worker 進程的最大打開文件數限制

    events {                                #  events 模塊中包含 nginx 中全部處理鏈接的設置。
        use epoll;                                # 設置用於複用客戶端線程的輪詢方法。
        worker_connections  51200;                #由一個 worker 進程同時打開的最大鏈接數。
    }

    rtmp_auto_push on;                        # 切換自動推送(多 worker 直播流)模式

    rtmp_auto_push_reconnect 1s;            # 當 worker 被幹掉時設置自動推送鏈接超時時間。默認爲 100 毫秒。

    rtmp {                                    # 保存全部 RTMP 配置的塊。   
        server {                                # 聲明一個 RTMP 實例。
            listen 1935;                            # 監聽的端口號
            chunk_size 4096;                        # 流整合的最大的塊大小。默認值爲 4096。

            application vod {                        # 建立一個 RTMP 應用。
                play /opt/media/nginxrtmp/flv;            # 點播文件路徑
            }

            application live {                        # 建立一個 RTMP 應用。
                live on;                                # 是否直播
                hls on;                                    # 是否開啓hls
                hls_path /usr/local/nginx/html/live;    # 設置 HLS 播放列表和分段目錄。
                hls_fragment 1s;                        # 設置 HLS 分段長度。
                max_connections 1024;                    # 最大鏈接數   
                hls_playlist_length 30s;                #  HLS 播放列表長度
                hls_sync 100ms;                            #  HLS 時間戳同步閾值
                meta copy;                                # 是否發送元數據到客戶端   
                recorder manual {                        # 建立一個錄製應用
                    record all manual;                        # 設置錄製模式
                    record_suffix %Y-%m-%d-%H_%M_%S.flv;    # 設置錄製文件名
                    record_max_size 6200000K;                # 設置錄製文件的最大值   
                    record_path /usr/local/nginx/html/Rec;    # 指定錄製的 flv 文件存放目錄
                }
                #record keyframes;
                #record_path /tmp;
                #record_max_size 128K;
                #record_interval 30s;
                #record_suffix .this.is.flv;

                #on_publish http://localhost:8080/publish;
                #on_play http://localhost:8080/play;
                #on_record_done http://localhost:8080/record_done;
            }
            # application hls { 
            #     live on; 
            #     hls on; 
            #     hls_path /tmp/app; 
            #     hls_fragment 5s; 
            # }

            # application hls{
            #     live on;
            #     hls on;
            #     hls_path /usr/local/nginx/html/hls;
            #     hls_fragment 5s;
            # }
        }
    }

    http {
        server {
            listen      5000;
            keepalive_timeout  65;
            location /stat {
                rtmp_stat all;
                rtmp_stat_stylesheet stat.xsl;
            }

            location /stat.xsl {
                root /opt/nginx-rtmp-server/nginx-rtmp-module/;
            }

            location /control {
                rtmp_control all;
            }

            location /rtmp-publisher {
                root /opt/nginx-rtmp-server/nginx-rtmp-module/test;
            }

            location / {
                root /opt/nginx-rtmp-server/nginx-rtmp-module/test/www;
            }

            location /crplayer {
                root /opt/nginx-rtmp-server/nginx-rtmp-module/test;
            }
            
            location /live { 
               #server hls fragments 
                types{ 
                    application/vnd.apple.mpegurl m3u8; 
                    video/mp2t ts; 
                } 
                root html;
                expires -1; 
            }
        }
    }
    # nginx.conf End


   
3. 運行Nginx服務

    # /usr/local/nginx/sbin/nginx -c /root/nginx/nginx.conf

 

4. 檢查是否運行成功

    # ps -ef | grep nginx

相關文章
相關標籤/搜索