0.引言
本文主要講解如何搭建RTSP流媒體服務(wù)器的過程,使用開源項(xiàng)目ZLMediaKit。通過這個(gè)開源項(xiàng)目,推RTSP流到服務(wù)器,然后拉流端可以拉取RTSP、RTMP等流。
ZLMediaKit碼云鏈接:https://gitee.com/xia-chu/ZLMediaKit
ZLMediaKit的github鏈接:https://github.com/xiongziliang/ZLMediaKit
ZLMediaKit源碼圖片:
ZLMediaKit功能列表:
支持推流rtsp,推到zlmediak服務(wù)器,拉流可以拉取rtsp,rtmp,hls等。功能很多,而且這個(gè)流媒體服務(wù)器是支持h265。
1.安裝編譯器及其插件(如果有需要就安裝)
1.1ZLMediaKit采?了C++11的語法和庫,要求編譯器?持完整的C++11標(biāo)準(zhǔn),如下:
(1)linux上要求gcc 版本 >= 4.8(4.7應(yīng)該也能?持)。
(2)macOS上clang >= ???(我也不知道,估計(jì)?部分不會(huì)遇到這個(gè)問題)。
(3)windows 上visual stuido >= 2015(vs2013某些版本也能編譯通過,如果怕麻煩建議直接vs2017)。
1.2安裝編譯器
(1)如果你是debian系操作系統(tǒng)(包括ubuntu系?戶),?般?帶的gcc版本夠新,你可以這樣安裝gcc編譯器:
sudo apt-get install build-essential
(2)安裝cmake
ZLMediaKit采?cmake來構(gòu)建項(xiàng)?,通過cmake才能?成Makefile(或Xcode/VS?程),所以必須先安裝cmake才能完成后續(xù)步驟。
sudo apt-get install cmake
(3)依賴庫
ZLMediaKit可選依賴?些第三?庫,這些庫都不是必選的;在構(gòu)建ZLMediaKit時(shí),cmake能查找系統(tǒng)路徑中的這些庫,并根據(jù)安裝情況選擇是否開啟相關(guān)特性,你可以選擇安裝這些依賴并啟?相關(guān)特性:
安裝openssl
flash player在播放rtmp時(shí),采?的是復(fù)雜握?模式,如果不安裝該庫,flash player將播放不了zlmediakit 提供的rtmp url。同時(shí)ZLMediaKit的https/rtsps相關(guān)功能需要使?openssl才能開啟。
安裝ffmpeg
zlmediakit可以通過fork ffmpeg進(jìn)程的?式實(shí)現(xiàn)多種協(xié)議的拉流,編譯時(shí)不需要安裝FFmpeg。
安裝sdl、avcodec、avutil
這3個(gè)庫供ZLMediaKit的test_player測(cè)試程序使?,你通常不需要安裝這3個(gè)庫。
Debian系(包括ubuntu)系統(tǒng)下安裝其它依賴的?法:
注意:這個(gè)根據(jù)自己的實(shí)際情況去安裝,如果已經(jīng)安裝了就不用再安裝了。
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流媒體服務(wù)器
(1)在如下目錄路徑,如下:
創(chuàng)建文件夾,輸入命令:
mkdir ZLMediaKit_Stream_Server
(2)在如下目錄路徑,如下:
國(guó)內(nèi)用戶,最好使用碼云連接,這樣會(huì)比較快,輸入下載命令:
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git
下載界面如下:
下載完成后,這里會(huì)有個(gè)如下目錄自動(dòng)生成,如下:
進(jìn)入ZLMediaKit的源碼目錄,輸入命令:
cd ZLMediaKit/
ZLMediaKit的源碼目錄,如下界面:
(3)在如下目錄和路徑:
查看分支,輸入命令:
git branch -a
界面如下:
(4)在如下目錄和路徑:
執(zhí)行一條非常重要的命令(下載組件),千萬不要忘記,如下:
git submodule update --init
克隆完成后,如下界面:
(5)下載的是第三方庫和組件(比如ffmpeg和rtmp等),進(jìn)入如下目錄和路徑:
(6)輸入如下命令,查看下載的文件,如下界面:
這里舉例說明下,如果需要參考rtp的使用,可以參考如下目錄的代碼。其它代碼也一樣可以參考。
這里還有些是實(shí)現(xiàn)了reactor模型、線程封裝(包括線程池)、工具,所以學(xué)習(xí)流媒體,后臺(tái)相關(guān)的知識(shí)也是要學(xué)習(xí)和使用。
(7)ZLMediaKit提供了多平臺(tái)的編譯版本,進(jìn)入如下目錄:
查看gcc的版本,輸入命令,如下:
gcc -v
查看版本號(hào),界面如下:
注意:根據(jù)官網(wǎng)提示,只要這里的gcc版本大于4.8就可以,因?yàn)樾枰С謈++11版本。同樣的,macos、windows也是可以編譯。
(8)查看cmake版本:
使用cmake進(jìn)行編譯,在如下目錄:
(9)構(gòu)建工程,輸入如下命令:
mkdir build
cd build
進(jìn)入如下目錄,執(zhí)行命令:
cmake ..
如下界面:
編譯過程,如下界面:
編譯完成,如下界面:
(10)在如下目錄,輸入編譯命令:
make -j4
make過程,如下界面:
make完成,如下界面:
(11)進(jìn)入到如下目錄:
查看MediaServer相關(guān)的命令,輸入命令:
./MediaServer -h
如下界面:
(12)在相同目錄,使用前臺(tái)運(yùn)行,輸入如下命令:
./MediaServer
或守護(hù)進(jìn)程模式啟動(dòng)
./MediaServer -d &
運(yùn)行成功界面如下:
注意:如果自己在配置的時(shí)候,端口被占用了,可以修改配置文件,在如下目錄,輸入命令,并修改:
修改配置文件:
vim config.ini
修改端口號(hào),界面如下:
3.測(cè)試
(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標(biāo)準(zhǔn)不?持H265,但是國(guó)內(nèi)有??擴(kuò)展的,如果你想讓FFmpeg?持RTMP-H265,請(qǐng)按照此?章編譯:
參考如下鏈接:
https://github.com/ksvc/FFmpeg/wiki/hevcpush
這個(gè)插件源碼也是非常值得學(xué)習(xí),界面如下:
(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協(xié)議均支持h264和h265,而rtmp標(biāo)準(zhǔn)僅僅支持h264,如果需要支持h265,那僅僅需要添加插件才行,上面已經(jīng)給出了鏈接地址。
其它平臺(tái)(本次使用ubuntn系統(tǒng))更詳細(xì)的搭建步驟,可以參考官網(wǎng)如下地址:
https://github.com/xia-chu/ZLMediaKit/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
界面如下:
rtsp推流界面如下:
推流上來后,服務(wù)器響應(yīng)界面:
(4)使用ffplay拉流測(cè)試rtsp命令:
ffplay -rtsp_transport tcp rtsp://172.16.204.139/live/test
拉流測(cè)試rtsp結(jié)果界面:
(5)使用ffplay拉流測(cè)試rtmp命令:
ffplay rtmp://172.16.204.139/live/test
拉流測(cè)試rtmp結(jié)果界面:
服務(wù)器最終斷開的界面:
4.總結(jié)
聯(lián)系客服