使用的服务器介绍
本次测试我们使用ZLMediaKit作为RTSP服务器,服务器为Ubuntu24.04
下载
git clone https://github.com/ZLMediaKit/ZLMediaKit.git
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
安装编译需要的库
sudo apt install libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg
构建和编译项目
cd ZLMediaKit
mkdir build
cd build
cmake ..
make -j 8
查看编译生成的文件
➜ ZLMediaKit git:(master) cd release/linux/Debug/
➜ Debug git:(master) ls
api_tester_h264_media_server bom libmk_api.so MediaServer test_flv test_server
api_tester_h264_pusher config.ini libmov.a tab test_httpApi test_sortor
api_tester_httpclient default.pem libmpeg.a test_bench_forward test_httpClient test_wsClient
api_tester_pusher libext-codec.a libsrt.a test_bench_proxy test_pusher test_wsServer
api_tester_server libflv.a libzlmediakit.a test_bench_pull test_pusherMp4 www
api_tester_websocket libjsoncpp.a libzltoolkit.a test_bench_push test_rtp
启动服务
➜ Debug git:(master) sudo ./MediaServer -d
2024-08-28 23:12:24.582 I [MediaServer] [3917-MediaServer] Factory.cpp:41 registerPlugin | Load codec: H264
2024-08-28 23:12:24.582 I [MediaServer] [3917-MediaServer] Factory.cpp:41 registerPlugin | Load codec: H265
2024-08-28 23:12:24.582 I [MediaServer] [3917-MediaServer] Factory.cpp:41 registerPlugin | Load codec: JPEG
2024-08-28 23:12:24.582 I [MediaServer] [3917-MediaServer] Factory.cpp:41 registerPlugin | Load codec: mpeg4-generic
2024-08-28 23:12:24.582 I [MediaServer] [3917-MediaServer] Factory.cpp:41 registerPlugin | Load codec: opus
2024-08-28 23:12:24.582 I [MediaServer] [3917-MediaServer] Factory.cpp:41 registerPlugin | Load codec: PCMA
2024-08-28 23:12:24.582 I [MediaServer] [3917-MediaServer] Factory.cpp:41 registerPlugin | Load codec: PCMU
2024-08-28 23:12:24.582 I [MediaServer] [3917-MediaServer] Factory.cpp:41 registerPlugin | Load codec: L16
2024-08-28 23:12:24.583 D [MediaServer] [3917-MediaServer] System.cpp:148 startDaemon | 启动子进程:3920
2024-08-28 23:12:24.583 I [MediaServer] [3920-MediaServer] System.cpp:192 systemSetup | core文件大小设置为:18446744073709551615
2024-08-28 23:12:24.583 I [MediaServer] [3920-MediaServer] System.cpp:201 systemSetup | 文件最大描述符个数设置为:1048576
2024-08-28 23:12:24.584 I [MediaServer] [3920-MediaServer] main.cpp:256 start_main | ZLMediaKit(git hash:df9dd3d/2024-08-28T12:28:01+08:00,branch:master,build time:2024-08-28T22:58:35)
2024-08-28 23:12:24.674 D [MediaServer] [3920-MediaServer] SSLBox.cpp:174 setContext | Add certificate of: default.zlmediakit.com
2024-08-28 23:12:24.674 D [MediaServer] [3920-stamp thread] util.cpp:366 operator() | Stamp thread started
2024-08-28 23:12:24.676 I [MediaServer] [3920-MediaServer] EventPoller.cpp:594 EventPollerPool | EventPoller created size: 8
2024-08-28 23:12:24.677 I [MediaServer] [3920-MediaServer] main.cpp:360 start_main | 已启动http api 接口
2024-08-28 23:12:24.677 I [MediaServer] [3920-MediaServer] main.cpp:362 start_main | 已启动http hook 接口
2024-08-28 23:12:24.678 I [MediaServer] [3920-MediaServer] TcpServer.cpp:221 start_l | TCP server listening on [::]: 554
2024-08-28 23:12:24.679 I [MediaServer] [3920-MediaServer] TcpServer.cpp:221 start_l | TCP server listening on [::]: 1935
2024-08-28 23:12:24.680 I [MediaServer] [3920-MediaServer] TcpServer.cpp:221 start_l | TCP server listening on [::]: 80
2024-08-28 23:12:24.680 I [MediaServer] [3920-MediaServer] TcpServer.cpp:221 start_l | TCP server listening on [::]: 443
2024-08-28 23:12:24.683 I [MediaServer] [3920-MediaServer] UdpServer.cpp:123 start_l | UDP server bind to [::]: 10000
2024-08-28 23:12:24.691 I [MediaServer] [3920-MediaServer] TcpServer.cpp:221 start_l | TCP server listening on [::]: 10000
2024-08-28 23:12:24.692 I [MediaServer] [3920-MediaServer] UdpServer.cpp:123 start_l | UDP server bind to [::]: 9000
查看监听的端口
➜ Debug git:(master) sudo ss -tunlp | grep MediaServer
udp UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=3920,fd=33))
udp UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=3920,fd=42))
udp UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=3920,fd=43))
udp UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=3920,fd=44))
udp UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=3920,fd=45))
udp UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=3920,fd=46))
udp UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=3920,fd=47))
udp UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=3920,fd=48))
udp UNCONN 0 0 *:10000 *:* users:(("MediaServer",pid=3920,fd=34))
udp UNCONN 0 0 *:10000 *:* users:(("MediaServer",pid=3920,fd=35))
udp UNCONN 0 0 *:10000 *:* users:(("MediaServer",pid=3920,fd=36))
udp UNCONN 0 0 *:10000 *:* users:(("MediaServer",pid=3920,fd=37))
udp UNCONN 0 0 *:10000 *:* users:(("MediaServer",pid=3920,fd=38))
udp UNCONN 0 0 *:10000 *:* users:(("MediaServer",pid=3920,fd=39))
udp UNCONN 0 0 *:10000 *:* users:(("MediaServer",pid=3920,fd=40))
udp UNCONN 0 0 *:10000 *:* users:(("MediaServer",pid=3920,fd=41))
tcp LISTEN 0 1024 *:1935 *:* users:(("MediaServer",pid=3920,fd=29))
tcp LISTEN 0 1024 *:10000 *:* users:(("MediaServer",pid=3920,fd=32))
tcp LISTEN 0 1024 *:80 *:* users:(("MediaServer",pid=3920,fd=30))
tcp LISTEN 0 1024 *:443 *:* users:(("MediaServer",pid=3920,fd=31))
tcp LISTEN 0 1024 *:554 *:* users:(("MediaServer",pid=3920,fd=28))
ffmpeg 推流测试
使用rtsp方式推流
ffmpeg -re -i akagi.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test
使用rtmp方式推流
ffmpeg -re -i akagi.mp4 -vcodec h264 -acodec aac -f flv
rtmp://127.0.0.1/live/test
使用rtp方式推流
ffmpeg -re -i akagi.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
ffplay 拉流播放
使用rtsp播放
ffplay rtsp://127.0.0.1/live/test
使用rtmp播放
ffplay rtmp://127.0.0.1/live/test