1. 程式人生 > >nginx-rtmp-module和ffmpeg搭建流媒體伺服器

nginx-rtmp-module和ffmpeg搭建流媒體伺服器

  萬事俱備,只欠東風,安裝完畢nginx-rtmp-module 和ffmpeg後,就可以開始搭建流媒體伺服器了哈。下面是具體步驟:
  
  一、配置nginx.conf
  開啟nginx配置檔案,在裡面新增如下配置:

rtmp {
server {
    listen 1935;
    application myapp {
      live on;
    }
    application hls {
        live on;
        hls on;
        hls_path /tmp/hls;
    }
  }
}

rtmp 不在任何域裡面.另外針對hls,需要增加如下配置

location /hls {
        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
        root /tmp;
        add_header Cache-Control no-cache;
}

這個配置需要配置在配置檔案的server域裡面.以上如果配置錯誤 ,重啟nginx時會報錯如:

nginx: [emerg] "rtmp" directive is not allowed here in /etc/nginx/nginx.conf:18

重啟NGINX後,用netstat -anp|grep 1935 命令檢視是否已經啟動流媒體服務的埠。有則證明啟動和配置成功。

  二、ffmpeg推流到nginx
1, rtmp流  

ffmpeg -re -i “/alidata/download/06.mp4” -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://你的伺服器ip:1935/myapp/test1

執行這個命令,則表示將流推送到 rtmp://你的伺服器ip:1935/myapp/test1這個地址,解釋一下這個命令列的選項引數:

-vcodec libx264 表示 視訊的編碼器為H264;
vprofile baseline 設定音視訊編碼器的類
-acodec aac 指定聲音的編碼器為AAC
-ar 44100 設定音訊編解碼器的取樣率,整數,單位Hz。
-strict -2
-ac 1 設定音訊編解碼器的聲道數目
-f flv 強制設定輸入和輸出檔案格式
-s 1280x720 設定影象解析度
-q 10

複製這個地址到VLC播放器就可以看到視訊
這裡寫圖片描述

2,hls流

ffmpeg -re -i “/alidata/download/06.mp4” -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://你的伺服器IP:1935/hls/test2

在/tmp/hls目錄 則看到生成了test2.m3u8檔案
這裡寫圖片描述

播放器播放的就是這個檔案。至此已經利用nginx-rtmp-module和ffmpeg成功搭建流媒體伺服器,對視訊播放已經大概有一個認識。