手把手教你使用ffmpeg及nginx實現直播、點播、安防監控
- 2019 年 11 月 11 日
- 筆記
搭建思路:
1. 採用nginx+nginx-rtmp-module搭建rtmp服務端
2. ffmpeg作為推送端,將影片流轉為adobe flash flv格式封裝後推送到nginx rtmp服務
Nginx服務端:
nginx下載:

nginx-rtmp-module下載:

編譯安裝:

添加rtmp配置:


啟動服務:

配置Nginx流媒體伺服器
nginx伺服器有一個配置文件叫做nginx.conf ,這個文件默認是位於/usr/local/nginx/conf 目錄下。 我將這個文件改成這樣:



其中rtmp就是rtmp伺服器模組,埠是1935,application我理解為一個路徑。可以通過訪問rtmp://localhost/videotest 來訪問videotest這個資源。live on 表示這是實時的傳輸,這不同於點播,點播就好比我在某影片網站上想看一個影片,無論我什麼時候去點擊,它會從頭開始播放。而實時傳輸(直播),就是好比看電視,我在19:20去打開電視(打開直播路),影片不會從頭開始播放,而是從當前(19:20)的影片數據開始播放。
除了配置rtmp伺服器,還可以配置HTTP和HTTPS伺服器。這方面我還沒有深入去了解。更多關於nginx伺服器和其配置方式,請閱讀nginx官網 。
安裝ffmpeg
首先安裝h264 影片編解碼庫:
sudo apt-get update
sudo apt-get install libx264-dev
安裝ffmpeg ,依次輸入以下命令:
wget http://ffmpeg.org/releases/ffmpeg-3.0.9.tar.bz2
tar jxvf ffmpeg-3.0.9.tar.bz2
cd ffmpeg-3.0.9/
sudo ./configure –enable-shared –enable-pthreads –enable-gpl –enable-avresample –enable-libx264 –enable-libtheora –disable-yasm
動態
sudo ./configure –disable-shared –enable-static –enable-pthreads –enable-gpl –enable-avresample –enable-libx264 –enable-libtheora –disable-yasm
靜態
如果出現錯誤 ,可能需要安裝sudo apt-get -y install libtheora-dev
sudo make
sudo make install
其中sudo make 這個過程會比較久。安裝完ffmpeg之後,在命令行中輸入ffmpeg:
如果出現找不到庫,說明是使用動態編譯,庫的路徑無法找到。
因為這裡我重新用靜態命令編譯一遍,然後就成功了。
推流與拉流
配置好nginx.conf之後,重新啟動sudo /usr/local/nginx/sbin/nginx
然後在命令行中使用 ffmpeg 進行推流:
ffmpeg -re -i /home/hjh/nginx/video.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost:1935/videotest/test
/home/hjh/nginx/video.mp4自己需要播放的文件。
在本機器上用vlc打開串流rtmp://localhost:1935/videotest/test如圖

這裡有一個bug,區域網中其他電腦訪問伺服器需要使用: rtmp://10.150.90.230:1935/videotest/test 10.150.90.230 表示伺服器的IP地址,並且需要加入埠號,否則只能在本機伺服器上播放,其他電腦如法播放。
