rtsp沒媒體服務搭建, 支援 rtp, rtsp, rtmp
阿新 • • 發佈:2022-03-25
rtsp 媒體伺服器選型
1.rtsp-server
主要針對 RTSP協議的輕量級伺服器, 由四人組成. 從github
中 issues
shell https://github.com/revmischa/rtsp-server
2. ZLMediaKit
https://github.com/ZLMediaKit/ZLMediaKit
https://gitee.com/ZLMediaKit/ZLMediaKit
經過商用長時間驗證,效能可靠穩定, 目前由58位多開發人員提供
- 支援多種協議(RTP/RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支援協議互轉。
- 使用多路複用/多執行緒/非同步網路IO模式開發,併發效能優越,支援海量客戶端連線。
- 支援linux、macos、ios、android、windows全平臺。
- 支援畫面秒開、極低延時(500毫秒內,最低可達100毫秒)。
- 提供完善的標準C API,可以作SDK用,或供其他語言呼叫
- 同時支援 rtsp 和 rtmp
- 支援 docker 容器
...
優點甚多,官網介紹很詳細
rtsp 效能測試
https://github.com/ZLMediaKit/ZLMediaKit/wiki/RTSP效能優化
3. 環境搭建(ZLMediaKit)
基於 docker 安裝
docker安裝`https://docs.docker.com/engine/install/centos/#installation-methods`
1. 安裝 docker 引擎
yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum-config-manager --enable docker-ce-nightly # 安裝 最新的docker版本 yum install docker-ce docker-ce-cli containerd.io # 列舉 docker 版本, 如果需要安裝其他版本的docker, 可以使用下面的命令 yum list docker-ce --showduplicates | sort -r # 安裝特定版本的 docker yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io # 啟動 docker systemctl status/stop/restart/disable/enable docker # 開機自啟動 sudo systemctl enable/disable docker.service sudo systemctl enable/disable containerd.service # docker 相關操作 docker ps -a # 檢視所有容器 docker run hello-world # 執行 hello-world 容器 docker search xxxxx # 查詢線上容器 docker pull xxxx:version # 下載容器 docker images # 檢視所有映象
2. 安裝 zlmediakit 映象並執行, 該映象由官方提供
docker pull zlmediakit/zlmediakit:Release.last
# -p 本地埠:遠端埠
docker run -id -p 1935:1935 -p 8081:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp zlmediakit/zlmediakit:Release.last
3. 推流拉流
# rtsp tcp 推流, test1.webm 是一個 8K 測試視訊,也可以使用其他的
ffmpeg -re -i "./test1.webm" -vcodec h264 -acodec aac -f rtsp -rtsp_transport udp rtsp://101.43.179.35:8554/live/test
# rtsp udp 推流
ffmpeg -re -i "./test1.webm" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://101.43.179.35:8554/live/test
# ffplay 拉流
ffplay http://101.43.179.35:8081/live/test/hls.m3u8
# rtp 推流
ffmpeg -re -i "./test1.webm" -vcodec h265 -acodec aac -f rtp_mpegts rtp://101.43.179.35:10000
可以輸入web服務地址檢視上傳的流檔案, 然後通過 ffplay 播放即可
4.基於docker容器如何修改配置檔案
基於 原始碼搭建服務
官方文件 https://github.com/ZLMediaKit/ZLMediaKit/wiki/快速開始
環境 Centos8 系統
安裝 額外依賴
yum install -y gcc gcc-c++ cmake
安裝 ffmpeg, 並且要下載配置使其支援 h264 視訊編碼
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.gz ## 安裝 x264 需要 nasm
cd nasm-2.14 && ./configure && make && make install
git clone https://code.videolan.org/videolan/x264.git
cd x264 && ./configure --prefix=/usr/x264/ --includedir=/usr/local/include --libdir=/usr/local/lib --enable-shared && make && make install
curl -O http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz ## 下載依賴
tar -zxvf yasm-1.3.0.tar.gz && cd yasm-1.3.0 && ./configure && make && make install
git clone https://gitee.com/mirrors/ffmpeg
cd ffmpeg && ./configure && make
編譯
cd ZLMediaKit
mkdir build
cd build
#macOS下可能需要這樣指定openss路徑:cmake .. -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2j/
cmake ..
make -j4
執行
cd ZLMediaKit/release/linux/Debug # 該目錄下有各種執行命令,可以拷貝到其他的地方
./MediaServer ## 執行專案
./MediaServer -h ## 檢視配置檔案
config.ini ## 配置檔案,詳細配置請檢視 https://github.com/zlmediakit/ZLMediaKit/blob/master/conf/config.ini