nginx是配置網站服務器,但是通過安裝相應modue也可以實現直播推流。
nginx服務器配置
環境
- ubuntu 16.04
- nginx 1.13
依賴庫安裝
sudo apt-get install git
sudo apt-get install libssl-dev
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev
sudo apt-get install zlib1g-dev
sudo apt-get install git
sudo apt-get install wget
安裝過程中,apt佔用,出現錯誤:
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
解決方法:
ps aux | grep apt
kill ps
下載解壓
mkdir rtmp
cd rtmp
git clone https://github.com/arut/nginx-rtmp-module.git
wget http://nginx.org/download/nginx-1.13.3.tar.gz
tar -zxvf nginx-1.13.3.tar.gz
nginx-rtmp-module添加到nginx服務器
cd nginx-1.13.3
./configure --add-module=/home/lammy/rtmp/nginx-rtmp-module
編譯安裝
make
sudo make install
運行
cd /usr/local/nginx
sudo ./nginx
驗證
ps -ef|grep nginx
配置rtmp推流
進入nginx的配置信息
cd /usr/local/nginx/conf
sudo gedit nginx.conf
添加 rtmp服務
在http同級目錄下添加 rtmp服務
rtmp
{
server
{
listen 1935;
chunk_size 4096;
application live #live rtmp名稱爲名字,下面on這裏表示開啓
{
live on;
}
}
}
添加推流信息查看http接口
在http中添加推流信息,與http內部server統計目錄
server
{
listen 8080;
location /stat{
rtmp_stat all; #所有狀態
rtmp_stat_stylesheet stat.xsl #state的樣式表
}
location /stat.xsl{
root /home/lammy/rtmp/nginx-rtmp-module;#state的樣式表路徑
}
}
/home/lammy/rtmp/nginx-rtmp-module是下載的module中的stat表格路徑
重啓nginx服務器
cd usr/local/nginx/sbin
sudo pkill nginx
sudo ./nginx
FFmepg 推流
上面配置了ffmpeg的服務,地址就是rtmp+服務器ip + rtmp名稱
ffmpeg -i test.mp4 -f flv rtmp://192.168.32.129/live
推流視頻有些模糊,想要推流原數據,可以查看:ffmpeg + crtmpserver實現直播推流
播放
vlc播放
vlc播放器下載安裝,
- 先打開vlc,左上角 媒體,打開網路串流,輸入上面推流的地址:rtmp://192.168.32.129/live,點擊打開
- 推流,執行上面的命令ffmpeg -i test2.mp4 -f flv rtmp://192.168.32.129/live
這樣就可以看到vlm播放我們推流的視頻了。
ffmpeg中的ffplay播放
ffplay rtmp:/192.168.32.129/live -fflags nofbuffer
ffpaly播放,因爲要音視頻推流控制,會有緩存,很延遲,這裏就設置爲無緩衝。
查看推流信息
在推流中,我們打開網站輸入:http://192.168.32.129:8080/stat 就可以看到推流的信息了(實時查看可F5 刷新頁面),如下圖: