背景分析
EasyNVR主要功能包括通過RTSP協議接入攝像機、支持Onvif協議,支持雲臺控制,焦距縮放、全平臺(web/Android/iOS/微信/H5)觀看,支持RTMP、HLS、http-flv協議、支持CDN接入,直接在每一個通道配置填寫獨立的阿里雲/騰訊雲CDN的RTMP推流地址即可、支持全網頁配置管理、支持用戶管理,權限驗證、支持錄像點播、錄像計劃、時間錄像檢索播放。
在寫代碼的過程中,經常需要利用ffmpeg進行h264編解碼,ffmpeg默認是不支持h264編解碼的,需要在編譯ffmpeg時增加支持h264編解碼功能模塊。
今天給大家分享下ffmpeg是如何增加h264編解碼功能模塊的。
添加h264功能模塊,由於默認ffmpeg是不支持h264編解碼的,x264是第三方庫,需要先下載編譯生成庫,然後在編譯ffmpeg的時候添加此編譯選項。
-
(1)編譯生成x264庫:
下載地址:
git clone https://code.videolan.org/videolan/x264.git -
(2)編譯x264庫
cd x264
sudo ./configure --enable-shared –enable-static --disable-asm
sudo make
sudo make install
-
(3)安裝ffmpeg
官網下載 http://ffmpeg.org/download.html下載所需要版本代碼,目前我們使用的是4.0.3
http://www.ffmpeg.org/releases/ 各個歷史版本下載 -
(4)下載完成後進行解壓
tar –vxf ffmpeg-4.0.3.tar.xz
cd ffmpeg-4.0.3
./configure --enable-shared --disable-yasm --enable-libx264 --enable-gpl
make
make install
默認安裝到/usr/local/ 目錄下,也可以通過–prefix=/usr/local/進行指定目錄,一般默認即可
-
(5)查詢下編譯的ffmpeg是否包含x264功能模塊
-
(6)通過ldd 查詢libavcodec.so 是否需要libx264.so 即可
如果需要增加其他外部第三方庫,與增加libx264方法一樣
Ffmpeg也提供了需要的地方庫的下載地址:
https://johnvansickle.com/ffmpeg/release-source/
EasyNVR是一款擁有完整、自主、可控知識產權,同時又能夠具備軟硬一體功能的安防互聯網化流媒體服務器,能夠通過簡單的網絡攝像機通道配置,將傳統監控行業裏面的高清網絡攝像機IP Camera、NVR等具有RTSP、Onvif協議輸出的設備接入到EasyNVR,EasyNVR能夠將這些視頻源的音視頻數據進行拉取,轉換爲RTMP/HLS,進行全平臺終端H5直播(Web、Android、iOS),並且EasyNVR能夠將視頻源的直播數據對接到第三方CDN網絡,實現互聯網級別的直播分發。