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成功搭建流媒體伺服器,對視訊播放已經大概有一個認識。