一、安装 ZLMediaKit
1. 下载
git clone --recursive https://github.com/ZLMediaKit/ZLMediaKit.git
2.编译
mkdir build
cd build
cmake ..
make -j4
3.启动
./release/linux/Debug/MediaServer
启动时可能会遇到端口绑定失败的问题,因为ZLMediaKit默认很多端口都绑在1024之下,
而Linux 规定:1024 以下端口是特权端口,只有 root 用户才能监听。
Bind socket failed: permission denied
Start server failed: Listen on :: 554 failed: permission denied
需要在release/linux/Debug/config.ini配置文件中修改端口(下文用到的secret也是在其中定义),改到1024之上的空闲端口
二、ZLMediaKit 自动拉流
拉流地址:
http://服务器ip:端口/index/api/addStreamProxy?secret=你的ZLMediaKit密码&vhost=__defaultVhost__&app=自定义应用名称&stream=流名称&url=流地址
示例:
http://127.0.0.1:8054/index/api/addStreamProxy?secret=123456&vhost=__defaultVhost__&app=live&stream=cam1&url=rtsp://admin:123456@192.168.1.150:554/Streaming/Channels/101
拉流成功会看到:
{
"code": 0,
"key": "xxxx"
}
并且在 MediaServer 日志中看到:
add stream proxy success
此时服务器内部已生成了一个流:live/cam1(你定义的名称app/stream)
访问http://127.0.0.1:8054/live/cam1.live.flv(改为你配置的http端口和定义的名称)会触发flv文件的下载,说明已经成功了。
三、在浏览器中播放视频
使用 flv.js解封装 FLV
创建播放页面
在任意目录创建一个文件:
nano player.html
写入以下内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ZLM Player</title>
<script src="https://cdn.jsdelivr.net/npm/flv.js@latest/dist/flv.min.js"></script>
</head>
<body>
<video id="videoElement" controls autoplay width="800"></video>
<script>
if (flvjs.isSupported()) {
var videoElement = document.getElementById('videoElement');
var flvPlayer = flvjs.createPlayer({
type: 'flv',
url: 'http://127.0.0.1:8054/live/cam1.live.flv'
});
flvPlayer.attachMediaElement(videoElement);
flvPlayer.load();
flvPlayer.play();
}
</script>
</body>
</html>
在同目录下暴露目录
python3 -m http.server 9000
随后在浏览器中访问
http://127.0.0.1:9000/player.html
即可播放视频。