网站文件夹命名,wordpress标签伪静态态,wordpress 科技企业主题,wordpress 电台插件ZLMediaKit 是啥#xff1f; ZLMediaKit是国人开发的开源C流媒体服务器#xff0c;同SRS一样是主流的流媒体服务器。 ZLToolKit是基于C11的高性能服务器框架#xff0c;和ZLMediaKit是同一个作者#xff0c;ZLMediaKit正是使用该框架开发的。 官网
ZLMediaKit开源地址 ZLMediaKit是国人开发的开源C流媒体服务器同SRS一样是主流的流媒体服务器。 ZLToolKit是基于C11的高性能服务器框架和ZLMediaKit是同一个作者ZLMediaKit正是使用该框架开发的。 官网
ZLMediaKit开源地址https://github.com/ZLMediaKit/ZLMediaKit ZLToolKit开源地址https://github.com/ZLMediaKit/ZLToolKit 国内登陆github非常不稳定如下是ZLMediaKit对应的gitee 网址
ZLMediaKit: 实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架支持大并发连接请求 ZLMediaKit源码分析的一篇文章
原文链接https://blog.csdn.net/weixin_40355471/article/details/135422631 1.如何使用 ZLMediaKit 搭建RTSP 服务器 1.国内⽤户推荐从同步镜像⽹站gitee下载源码 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git cd ZLMediaKit # 千万不要忘记执⾏这句命令 git submodule update --init 强烈建议使⽤ubuntu16或更新版本编译ZLMediaKitmacOS是次选推荐平台最不推 荐的是centos6.*或windows平台。 本地实验会在 ubuntu上实现。相关截图放在后面 2.编译相关 2.1 编译器版本要求 ZLMediaKit采⽤了C11的语法和库要求编译器⽀持完整的C11标准亦即 linux上要求gcc 版本 4.8(4.7应该也能⽀持) macOS上clang ???我也不知道估计⼤部分不会遇到这个问题 windows 上visual stuido 2015(vs2013某些版本也能编译通过如果怕麻烦建议直接vs2017) 在ubuntu上查看g版本
g --version 2.2 安装编译器 如果你是debian系操作系统(包括ubuntu系⽤户)⼀般⾃带的gcc版本够新你可以这样安装gcc编译 器 sudo apt-get install build-essential 你正在尝试在Ubuntu或其他基于Debian的Linux发行版上安装 build-essential包。 build-essential是一个包含编译软件所需要的基本包集合的元包。它会安装GCC、G、Make等基本工具这些工具是编译大部分源代码所必需的 2.3 安装cmake ZLMediaKit采⽤cmake来构建项⽬通过cmake才能⽣成Makefile(或Xcode/VS⼯程)所以必须先安装 cmake才能完成后续步骤。 如果你是debian系操作系统(包括ubuntu系⽤户)⼀般⾃带的cmake版本够新你可以这样安装 cmake sudo apt-get install cmake 2.4 依赖库 2.4.1 依赖库列表 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个库。 2.4.2 安装依赖库 Debian系(包括ubuntu系统下安装依赖的⽅法 # 除了 openssl, 其他其实都 可以不安装 sudo apt update sudo apt-get install openssl 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.5 构建和编译项⽬ 在linux或macOS系统下,你应该这样操作 1 cd ZLMediaKit
2 mkdir build
3 cd build
4 #macOS下可能需要这样指定openss路径cmake .. -DOPENSSL_ROOT_DIR/usr/lo
cal/Cellar/openssl/1.0.2j/
5 cmake ..
6 make -j4 3 运⾏ ZLMediaKit⼯程主要⽣成3种⼆进制⽬标⽂件他们的⽣成的路径在release⽬录下这些⽬标⽂件主要分为 MediaServer进程这是ZLMediaKit作为服务器的主进程该进程可以在免去开发的情况下直接作为测 试流媒体服务器使⽤如果你需要更复杂的业务逻辑可以通过 Web HOOK 和 RESTful API 实现,同时 你可以通过 配置⽂件 控制其参数。 1 cd ZLMediaKit/release/linux/Debug
2 #通过-h可以了解启动参数
3 ./MediaServer -h
4 #以守护进程模式启动
5 ./MediaServer -d 2.本地实验的截图和说明 下载 ZLMediaKit git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git cd ZLMediaKit # 千万不要忘记执⾏这句命令 git submodule update --init cd ZLMediaKit 在ubuntu上查看g版本 linux上要求gcc 版本 4.8(4.7应该也能⽀持)本地安装的ubuntu 是符合标准的因此 安装编译器 如果你是debian系操作系统(包括ubuntu系⽤户)⼀般⾃带的gcc版本够新你可以这样安装gcc编译 器 sudo apt-get install build-essential build-essential是一个包含编译软件所需要的基本包集合的元包。它会安装GCC、G、Make等基本工具这些工具是编译大部分源代码所必需的 安装cmake ZLMediaKit采⽤cmake来构建项⽬通过cmake才能⽣成Makefile(或Xcode/VS⼯程)所以必须先安装 cmake才能完成后续步骤。 如果你是debian系操作系统(包括ubuntu系⽤户)⼀般⾃带的cmake版本够新你可以这样安装 cmake sudo apt-get install cmake 安装依赖库这里只是安装了openssl sudo apt update sudo apt-get install openssl 构建和编译项⽬ 1 cd ZLMediaKit
2 mkdir build
3 cd build
4 #macOS下可能需要这样指定openss路径cmake .. -DOPENSSL_ROOT_DIR/usr/lo
cal/Cellar/openssl/1.0.2j/
5 cmake ..
6 make -j4 挨个检查是不是100% build 成功 3.运行MediaServer
./MediaServer -h 查看启动参数 ./MediaServer -d 以守护进程模式启动 1. 错误排查原因是 端口号 554 被占用 2. 使用 sudo lsof -i:554 查看554端口被那个 程序占用了 3.使用 sudo kill -9 xxxxx 将 占用该端口的杀死 注意在杀死占用554 端口的 进程前./MediaServer -d 命令行的状态 按下回车后的状态正常启动了。 然后我们再将 使用 sudo lsof -i:554 查看554端口被那个 程序占用了 然后再使用 sudo kill -9 xxx 将 占用该端口的杀死 使用 sudo lsof -i:554 查看554端口 会发现./MediaServer -d 的进程号是 10503 然后再使用 sudo kill -9 10503 将 占用该端口的杀死会发现 ./MediaServer -d 会重启。 4. debug目录下的config.ini 改动参数 log 很重要要看log 有可能其他的端口也会占用了假设你还安装了 其他的 serversql servertomcat等服务器那么被占用端口是很可能的事情。 如果想改动 ZLMediaKit的端口请 在config.ini 中改动参数 ; auto-generated by mINI class {[api]
apiDebug1
defaultSnap./www/logo.png
downloadRoot./www
secretnXIB3CEQY1nAtaoDoe0JSwNCNakR3asa
snapRoot./www/snap/[cluster]
origin_url
retry_count3
timeout_sec15[ffmpeg]
bin/usr/bin/ffmpeg
cmd%s -re -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s
log./ffmpeg/ffmpeg.log
restart_sec0
snap%s -i %s -y -f mjpeg -frames:v 1 -an %s[general]
broadcast_player_count_changed0
check_nvidia_dev1
enableVhost0
enable_ffmpeg_log0
flowThreshold1024
listen_ip::
maxStreamWaitMS15000
mediaServerIdyour_server_id
mergeWriteMS0
resetWhenRePlay1
streamNoneReaderDelayMS20000
unready_frame_cache100
wait_add_track_ms3000
wait_audio_track_data_ms1000
wait_track_ready_ms10000[hls]
broadcastRecordTs0
deleteDelaySec10
fastRegister0
fileBufSize65536
segDelay0
segDur2
segKeep0
segNum3
segRetain5[hook]
alive_interval10.0
enable0
on_flow_report
on_http_access
on_play
on_publish
on_record_mp4
on_record_ts
on_rtp_server_timeout
on_rtsp_auth
on_rtsp_realm
on_send_rtp_stopped
on_server_exited
on_server_keepalive
on_server_started
on_shell_login
on_stream_changed
on_stream_none_reader
on_stream_not_found
retry1
retry_delay3.0
stream_changed_schemasrtsp/rtmp/fmp4/ts/hls/hls.fmp4
timeoutSec10[http]
allow_cross_domains1
allow_ip_range::1,127.0.0.1,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255,10.0.0.0-10.255.255.255
charSetutf-8
dirMenu1
forbidCacheSuffix
forwarded_ip_header
keepAliveSecond30
maxReqSize40960
notFoundhtmlheadtitle404 Not Found/title/headbody bgcolorwhitecenterh1您访问的资源不存在/h1/centerhrcenterZLMediaKit(git hash:8bf48ed/2024-12-15T11:43:3108:00,branch:master,build time:2024-12-19T12:43:26)/center/body/html
port80
rootPath./www
sendBufSize65536
sslport443
virtualPath[multicast]
addrMax239.255.255.255
addrMin239.0.0.0
udpTTL64[protocol]
add_mute_audio1
auto_close0
continue_push_ms15000
enable_audio1
enable_fmp41
enable_hls1
enable_hls_fmp40
enable_mp40
enable_rtmp1
enable_rtsp1
enable_ts1
fmp4_demand0
hls_demand0
hls_save_path./www
modify_stamp2
mp4_as_player0
mp4_max_second3600
mp4_save_path./www
paced_sender_ms0
rtmp_demand0
rtsp_demand0
ts_demand0[record]
appNamerecord
enableFmp40
fastStart0
fileBufSize65536
fileRepeat0
sampleMS500[rtc]
externIP
maxRtpCacheMS5000
maxRtpCacheSize2048
max_bitrate0
min_bitrate0
nackIntervalRatio1.0
nackMaxCount15
nackMaxMS3000
nackMaxSize2048
nackRtpSize8
port8000
preferredCodecAPCMA,PCMU,opus,mpeg4-generic
preferredCodecVH264,H265,AV1,VP9,VP8
rembBitRate0
start_bitrate0
tcpPort8000
timeoutSec15[rtmp]
directProxy1
enhanced0
handshakeSecond15
keepAliveSecond15
port1935
sslport0[rtp]
audioMtuSize600
h264_stap_a1
lowLatency0
rtpMaxSize10
videoMtuSize1400[rtp_proxy]
dumpDir
gop_cache1
h264_pt98
h265_pt99
opus_pt100
port10000
port_range30000-35000
ps_pt96
rtp_g711_dur_ms100
timeoutSec15
udp_recv_socket_buffer4194304[rtsp]
authBasic0
directProxy1
handshakeSecond15
keepAliveSecond15
lowLatency0
port554
rtpTransportType-1
sslport0[shell]
maxReqSize1024
port0[srt]
latencyMul4
pktBufSize8192
port9000
timeoutSec5; } --- 4. ZLMediaKit 已经启动使用ffmpeg 命令 给该服务器上 推流数据 ZLMediaKit⽀持rtsp/rtmp/rtp推流 1、使⽤rtsp⽅式推流我们这一节学这个 1 # h264推流
2 ffmpeg -re -i /path/to/test.mp4 -vcodec h264 -acodec aac -f rtsp
-rtsp_transport tcp rtsp://127.0.0.1/live/test
3 # h265推流
4 ffmpeg -re -i /path/to/test.mp4 -vcodec h265 -acodec aac -f rtsp
-rtsp_transport tcp rtsp://127.0.0.1/live/test ffmpeg -re -i /path/to/test.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test 如下的推流说明 我们将D:/resource/zerenlian.mp4 这个文件推流到 ZLmediakit 服务器 该文件的 视频格式为 -vcodec h264 该文件的 音频格式为 -acodec aac 推流的方式是rtsp -f rtsp 推流是用tcp 的传送的 -rtsp_transport tcp 服务器的地址写法如下 rtsp://192.168.31.103/test/00000001zerenlian rtsp:// 代表的固定格式如果rtsp 格式 就必须这么写 。 192.168.31.103 是linux服务器的IP。 test/00000001zerenlian 是自己命名的对于 D:/resource/zerenlian.mp4 文件的映射。 ffmpeg -re -i D:/resource/zerenlian.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://192.168.31.103/test/00000001zerenlian 2.使⽤rtmp⽅式推流 1 #如果未安装FFmpeg你也可以⽤obs推流
2 ffmpeg -re -i /path/to/test.mp4 -vcodec h264 -acodec aac -f flv
rtmp://127.0.0.1/live/test
3 # RTMP标准不⽀持H265,但是国内有⾃⾏扩展的如果你想让FFmpeg⽀持RTMP-H265,请
按照此⽂章编译https://github.com/ksvc/FFmpeg/wiki/hevcpush 3.使⽤rtp⽅式推流 1 # h264推流
2 ffmpeg -re -i /path/to/test.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
3 # h265推流
4 ffmpeg -re -i /path/to/test.mp4 -vcodec h265 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000 1 # h264推流 2 ffmpeg -re -i /path/to/test.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000 3 # h265推流 4 ffmpeg -re -i /path/to/test.mp4 -vcodec h265 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000 先查看linux的ip 5. ZLMediaKit 已经启动使用ffplay 命令从该服务器上 拉流数据 使用 rtsp⽅式拉流 ffplay -rtsp_transport tcp rtsp://192.168.31.103/test/00000001zerenlian ffplay -rtsp_transport tcp rtsp://192.168.31.103/test/00000001zerenlian 如果我们使用 udp的形式去拉呢实际测试也是可以的 ffplay -rtsp_transport udp rtsp://192.168.31.103/test/00000001zerenlian 6 log 在这里 /home/hunandede/software/ZLMediaKit/release/linux/Debug/log