1. 程式人生 > 其它 >rtsp沒媒體服務搭建, 支援 rtp, rtsp, rtmp

rtsp沒媒體服務搭建, 支援 rtp, rtsp, rtmp

rtsp 媒體伺服器選型

1.rtsp-server

主要針對 RTSP協議的輕量級伺服器, 由四人組成. 從githubissues
shell https://github.com/revmischa/rtsp-server

2. ZLMediaKit

 https://github.com/ZLMediaKit/ZLMediaKit
 https://gitee.com/ZLMediaKit/ZLMediaKit

經過商用長時間驗證,效能可靠穩定, 目前由58位多開發人員提供

  1. 支援多種協議(RTP/RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支援協議互轉。
  2. 使用多路複用/多執行緒/非同步網路IO模式開發,併發效能優越,支援海量客戶端連線。
  3. 支援linux、macos、ios、android、windows全平臺。
  4. 支援畫面秒開、極低延時(500毫秒內,最低可達100毫秒)。
  5. 提供完善的標準C API,可以作SDK用,或供其他語言呼叫
  6. 同時支援 rtsp 和 rtmp
  7. 支援 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