rmtp+nginx+ffmpeg快速搭建直播平臺

快速搭建基於rmtp協議的直播平臺

環境

  • client端 win10
  • server端(直播) Ubuntu16.04

準備

  • 先在server端將目錄建好, 假設我們所有的文件都放在root/live
$ cd /root
$ mkdir live
$ mkdir nginx
$ mkdir video
$ cd live

client端

server端

$ wget http://nginx.org/download/nginx-1.8.1.tar.gz
$ wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz

安裝

  • client端就不用說了, exe文件一直點擊安裝就行

server端

  • 假設我的目錄文件都放在root/live下面

  • 解壓nginx, nginx-rtmp-module

    $ tar -zxvf nginx-1.8.1.tar.gz -C ./
    $ tar -zxvf nginx-rtmp-module-1.2.1.tar -C ./
    
  • nginx-rtmp-module-1.2.1重新命名nginx-rtmp-module-master

    $ mv nginx-rtmp-module-1.2.1 nginx-rtmp-module-master
    
  • 安裝nginx

    $ cd nginx-1.8.1
    $ ./configure --add-module=../nginx-rtmp-module-master --prefix=/root/live/nginx
    $ make
    $ make install
    
  • 檢查nginx安裝成功

    $ cd /root/live/nginx && ./sbin/nginx
    
  • 瀏覽器訪問你的服務端ip地址, 假設是1.2.3.4, 將出現nginx的歡迎頁面

    nginx 默認是80端口

配置

Server端

  • 修改nginx的訪問端口推流,拉流端口和location配置, 端口這裏假設爲1808018081, 用阿里雲的朋友記得給端口開放權限
    $ cd /root/live/nginx
    $ vim conf/nginx.conf
    

    重點看下面的配置, 需要修改的地方都加了TODO

    http {
    include       mime.types;
    default_type  application/octet-stream;
    
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
    #access_log  logs/access.log  main;
    
    sendfile        on;
    #tcp_nopush     on;
    
    #keepalive_timeout  0;
    keepalive_timeout  65;
    
    #gzip  on;
    
    server {
    	# TODO from 80 -> 18080
        listen       18080;
        server_name  0.0.0.0;
    
        #charset koi8-r;
    
        #access_log  logs/host.access.log  main;
        # TODO add location /stat
        location /stat{
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        # TODO add location /stat.xsl
        location /stat.xsl{
            root /root/live/nginx-rtmp-module-master/;
        }
        location / {
            root   html;
            index  index.html index.htm;
        }
        ...
        ...
    

運行

Server端

  • 重啓nginx

    $ cd /root/live/nginx
    $ ./sbin/nginx -s reload
    

    然後還是可以通過訪問1.2.3.4:18080來確定nginx成功重啓

  • 瀏覽器訪問1.2.3.4:18080/stat, 會出現如下圖
    直播圖

  • 創建直播推流, 需要在/root/live/video目錄下放好一個audio.mp4文件(可以使用scp進行遠程傳輸)

    $ cd /root/live/video
    $ ffmpeg -re -i ./audio.mp4 -vcodec copy -acodec copy -f flv rtmp://1.2.3.4:18081/live/audio
    

    live是我們在nginx配置文件中配置的application, audio隨便寫的, 可以換成別的

    • 成功的話將會出現以下信息
      在這裏插入圖片描述

Client端

  • 這個時候我們可以打開之前下載的CLV工具了, 選擇如下:
    • Media->Open Network Stream
  • 輸入我們的rtmp地址rtmp://1.2.3.4:18081/live/audio
  • 等待幾秒, 我們的直播平臺就搭建好了!

參考

[1] RTMP官方文檔
[2] nginx-rtmp-module
[3] nginx官方文檔
[4] 使用nginx-rtmp-module搭建RTMP直播服務器
[5] 如何從零開始搭建高性能直播平臺

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章