流媒體服務器搭建2 ubuntu16.04下載安裝ZLMediaKit
流媒體服務器搭建4 Windows編譯AKStream、AKStreamWebUI
1.2安裝編譯器
(1)如果你是debian系操作系統(包括ubuntu系⽤戶),⼀般⾃帶的gcc版本夠新,你可以這樣安裝gcc編譯器:
sudo apt-get install build-essential
(2)安裝cmake
ZLMediaKit采⽤cmake來構建項⽬,通過cmake才能⽣成Makefile(或Xcode/VS⼯程),所以必須先安裝cmake才能完成后續步驟。
sudo apt-get install cmake
(3)依賴庫
ZLMediaKit可選依賴⼀些第三⽅庫,這些庫都不是必選的;在構建ZLMediaKit時,cmake能查找系統路徑中的這些庫,並根據安裝情況選擇是否開啟相關特性,你可以選擇安裝這些依賴並啟⽤相關特性:
安裝openssl
flash player在播放rtmp時,采⽤的是復雜握⼿模式,如果不安裝該庫,flash player將播放不了zlmediakit 提供的rtmp url。同時ZLMediaKit的https/rtsps相關功能需要使⽤openssl才能開啟。
安裝ffmpeg
zlmediakit可以通過fork ffmpeg進程的⽅式實現多種協議的拉流,編譯時不需要安裝FFmpeg。
安裝sdl、avcodec、avutil
這3個庫供ZLMediaKit的test_player測試程序使⽤,你通常不需要安裝這3個庫。
Debian系(包括ubuntu)系統下安裝其它依賴的⽅法:
注意:這個根據自己的實際情況去安裝,如果已經安裝了就不用再安裝了。
sudo apt-get install libssl-dev
sudo apt-get install libsdl-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libavutil-dev
sudo apt-get install ffmpeg
2.搭建RTSP流媒體服務器
(1)在如下目錄路徑,如下:
創建文件夾,輸入命令:
mkdir ZLMediaKit_Stream_Server
(2)在如下目錄路徑,如下:
國內用戶,最好使用碼雲連接,這樣會比較快,輸入下載命令:
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git
下載界面如下:
下載完成后,這里會有個如下目錄自動生成,如下:
進入ZLMediaKit的源碼目錄,輸入命令:
cd ZLMediaKit/
ZLMediaKit的源碼目錄,如下界面:
(3)在如下目錄和路徑:
查看分支,輸入命令:
git branch -a
界面如下:
(4)在如下目錄和路徑:
執行一條非常重要的命令(下載組件),千萬不要忘記,如下:
git submodule update --init
克隆完成后,如下界面:
(5)下載的是第三方庫和組件(比如ffmpeg和rtmp等),進入如下目錄和路徑:
(6)輸入如下命令,查看下載的文件,如下界面:
這里舉例說明下,如果需要參考rtp的使用,可以參考如下目錄的代碼。其它代碼也一樣可以參考。
這里還有些是實現了reactor模型、線程封裝(包括線程池)、工具,所以學習流媒體,后台相關的知識也是要學習和使用。
(7)ZLMediaKit提供了多平台的編譯版本,進入如下目錄:
查看gcc的版本,輸入命令,如下:
gcc -v
查看版本號,界面如下:
注意:根據官網提示,只要這里的gcc版本大於4.8就可以,因為需要支持c++11版本。同樣的,macos、windows也是可以編譯。
(8)查看cmake版本:
使用cmake進行編譯,在如下目錄:
(9)構建工程,輸入如下命令:
mkdir build
cd build
進入如下目錄,執行命令:
cmake ..
如下界面:
編譯過程,如下界面:
編譯完成,如下界面:
(10)在如下目錄,輸入編譯命令:
make -j4
make過程,如下界面:
make完成,如下界面:
(11)進入到如下目錄:
查看MediaServer相關的命令,輸入命令:
./MediaServer -h
如下界面:
(12)在相同目錄,使用前台運行,輸入如下命令:
./MediaServer
或守護進程模式啟動
./MediaServer -d &
運行成功界面如下:
注意:如果自己在配置的時候,端口被占用了,可以修改配置文件,在如下目錄,輸入命令,並修改:
修改配置文件:
vim config.ini
修改端口號,界面如下:
3.測試
(1)使用rtsp方式推流命令
推流h264
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://172.16.204.139/live/test
推流h265
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h265 -acodec aac -f rtsp -rtsp_transport tcp rtsp://172.16.204.139/live/test
(2)使用rtmp方式推流命令
#如果未安裝FFmpeg,你也可以⽤obs推流
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h264 -acodec aac -f flv rtmp://172.16.204.139/live/test
# RTMP標准不⽀持H265,但是國內有⾃⾏擴展的,如果你想讓FFmpeg⽀持RTMP-H265,請按照此⽂章編譯:
參考如下鏈接:
https://github.com/ksvc/FFmpeg/wiki/hevcpush
這個插件源碼也是非常值得學習,界面如下:
(3)使用rtp方式推流命令
h264推流
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h264 -acodec aac -f rtp_mpegts rtp://172.16.204.139:10000
h265推流
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h265 -acodec aac -f rtp_mpegts rtp://172.16.204.139:10000
綜上,ZLMediakit是支持rtsp、rtp、rtmp推流的,其中rtsp、rtp協議均支持h264和h265,而rtmp標准僅僅支持h264,如果需要支持h265,那僅僅需要添加插件才行,上面已經給出了鏈接地址。
其它平台(本次使用ubuntn系統)更詳細的搭建步驟,可以參考官網如下地址:
https://github.com/xia-chu/ZLMediaKit/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
界面如下:
rtsp推流界面如下:
推流上來后,服務器響應界面:
(4)使用ffplay拉流測試rtsp命令:
ffplay -rtsp_transport tcp rtsp://172.16.204.139/live/test
拉流測試rtsp結果界面:
(5)使用ffplay拉流測試rtmp命令:
ffplay rtmp://172.16.204.139/live/test
拉流測試rtmp結果界面:
服務器最終斷開的界面:
測試
開啟服務

推流測試
ffmpeg -re -i abc.flv -strict -2 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://192.168.80.128/live/test
用vlc測試