ZLMediakit开源视频服务器——配置到本地服务器

ZLMediaKit 是一个基于 C++ 开发的高性能开源视频服务器,支持 GB28181、HTTP、RTSP 等多种协议。本文将介绍在宝塔面板如何使用 Docker 部署 ZLMediaKitWeb 管理界面(wvp-pro)。

没有本地服务器,怎么办?

一、在阿里云上申请一个【ECS云服务器】

免费试用3个月。

二、 安装宝塔面板

wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ed8484bec

 安装成功之后, 会给用户提供:外网面板地址、内网面板地址、username、password。该信息要保存记录好。

三、搭建ZLMediakit

使用Docker安装

1关闭防火墙,检查自己的端口是否占用

此镜像会占用以下端口

3366、9000、18080、18081、18001、8102、332、554、5060、1935

国标端口30000-30500

ZLMediaKit端口8088、80

WVP端口18080

wvp-pro的http端口18080

ZLMedia的调用接口18001

用户名:admin,密码:admin

2、拉取docker镜像
docker pull deatmask-docker.pkg.coding.net/wvp/wvp-pro/wvp-pro:2.7.2
3、局域网运行docker容器(内网运行选择这个代码)

docker run -it -d --env WVP_CONFIG="--media.sdp-ip=172.21.2.53--sip.ip=172.21.2.53--media.stream-ip=59.110.69.43 --sip.password=admin122" --restart=always --network=host --name=wvp-pro --privileged=true -v /opt/media/log/:/opt/media/log/ -v /opt/wvp/logs/:/opt/wvp/logs/ -v /opt/assist/logs/:/opt/assist/logs/ -v /opt/media/www/record/:/opt/media/www/record/ -v /opt/media/www/snap/:/opt/media/www/snap/ deatmask-docker.pkg.coding.net/wvp/wvp-pro/wvp-pro:2.7.2 /opt/wvp/run.sh

其中59.110.69.43替换自己的ip

4、互联网运行docker容器(公网运行选择这个代码)

docker run -it -d --env WVP_CONFIG="--media.sdp-ip=123.56.253.246  --media.ip=192.168.0.254  --media.hook-ip=88.88.88.88  --sip.ip=172.17.218.179  --media.stream-ip=88.88.88.88 --sip.password=admin123" --restart=always --network=host --name=wvp-pro --privileged=true -v /opt/media/log/:/opt/media/log/ -v /opt/wvp/logs/:/opt/wvp/logs/ -v /opt/assist/logs/:/opt/assist/logs/ -v /opt/media/www/record/:/opt/media/www/record/ -v /opt/media/www/snap/:/opt/media/www/snap/ deatmask-docker.pkg.coding.net/wvp/wvp-pro/wvp-pro:2.7.2 /opt/wvp/run.sh

123.56.253.246替换成自己服务器外网ip

172.17.218.179替换成自己服务器内网ip

admin123是设备接入密码(非必要不必修改)

5.之后在浏览器输入“自己的网址:18080”,即可进入视频服务器  

### RK3588平台使用ZLMediaKit实现RTSP推流 #### 准备工作 为了在RK3588平台上成功部署并运行基于ZLMediaKit的RTSP推流服务,需完成一系列准备工作。这包括但不限于获取必要的软件包、配置环境变量以及安装依赖项。 - **获取源码** ZLMediaKit是一个开源项目,可以从GitHub仓库克隆最新版本到本地环境中[^2]。 ```bash git clone https://github.com/ZLMediakit/ZLMediaKit.git cd ZLMediaKit ``` - **准备工具链** 对于RK3588这样的ARM架构设备来说,通常需要特定版本的交叉编译器来构建应用程序。确保已下载适用于目标系统的预编译工具链或自行搭建适合的交叉编译环境。 #### 编译与安装OpenSSL 由于ZLMediaKit依赖于OpenSSL提供安全传输支持,在继续之前还需要先编译和安装适配于嵌入式Linux系统的OpenSSL库。 ```bash tar xf openssl-*.tar.gz && cd openssl-* ./Configure linux-generic32 shared --prefix=/usr/local/ssl -fPIC no-hw no-engine make depend make sudo make install export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/ssl/lib/pkgconfig/ ``` 上述命令序列展示了如何针对通用32位Linux系统编译静态链接形式下的OpenSSL库,并将其安装至指定路径下以便后续环节能够顺利找到所需的头文件及动态链接库。 #### 配置ZLMediaKit 进入ZLMediaKit根目录后执行如下操作: ```bash mkdir build && cd build cmake .. make -j$(nproc) sudo make install ``` 此过程会读取CMakeLists.txt脚本定义的各项参数设置,自动检测当前主机环境特性从而生成相应的Makefile文件用于指导实际编译流程;`-j$(nproc)`选项允许充分利用多核CPU加速整个编译进度。 #### 实现RTSP推流功能 当所有前置条件均已满足之后,则可着手编写具体的应用逻辑代码片段以达成预期目的——即利用ZLMediaKit框架向远端客户端推送实时音视频流媒体资源。下面给出了一段简单的Python示例程序说明怎样创建一个基本的服务实例并向外界暴露可供访问的RTSP URL地址[^3]: ```cpp #include "Rtsp/RtspServer.h" using namespace mediakit; int main() { // 初始化日志模块,默认输出级别为INFO Tool::SetLogHandler([](const char *log){ printf("%s\n", log); }); // 启动RTSP服务器监听0.0.0.0:554端口上的连接请求 RtspServer::Instance().start("0.0.0.0", 554); // 注册自定义业务处理类对象关联至某一路直播频道ID(此处仅为示意) auto track = std::make_shared<RtspTrack>(); track->setOnPlay([track](std::shared_ptr<RtspMediaSource> &src, const SockAddr& addr, uint32_t session_id, bool is_play) { LOGI(L"Client %u.%u.%u.%u:%d play/pause stream", (uint8_t)(addr.sin_addr.s_addr >> 24), (uint8_t)(addr.sin_addr.s_addr >> 16), (uint8_t)(addr.sin_addr.s_addr >> 8), (uint8_t)(addr.sin_addr.s_addr), ntohs(addr.sin_port)); }); // 将轨道加入到名为test的播放列表中去 RtspMediaSource::Instance()[StringPrintf("rtsp://%s/test", getLocalIp().c_str())].addTrack(track); while(true){sleep(1);} // 死循环保持进程存活状态 return 0; } ``` 这段代码实现了启动一个简易版RTSP Server的功能,它会在后台持续等待来自外部网络节点发起的新建会话尝试直至接收到有效的PLAY指令才正式开始发送多媒体数据报文给对方解析显示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值