LiveNVR 常见问题
直播流地址格式
WEBRTC: webrtc[s]://{ip}:{port}/rtc/stream_{通道号}
FLV: http[s]://{ip}:{port}/flv/hls/stream_{通道号}.flv
WS_FLV: ws[s]://{ip}:{port}/ws-flv/hls/stream_{通道号}.flv
HLS: http[s]://{ip}:{port}/hls/stream_{通道号}/stream_{通道号}_live.m3u8
RTMP: rtmp://{ip}:{port}/hls/stream_{通道号}
RTSP: rtsp://{ip}:{port}/stream_{通道号}
LiveNVR 的并发性能怎么样?
LiveNVR 摄像机接入采用的是 liveqing 的底层框架,流媒体分发采用的是 nginx,性能都是得到过行业巨头的认可,非常可靠!
LiveNVR 如何做通道分组?
管理员用户登录 LiveNVR, 左侧菜单进入分屏展示页面, 可以看到通道目录树, 鼠标右键目录树节点, 有新建目录, 鼠标右键目录节点, 可以为目录选择通道,编辑目录,也可以删除目录
切换数据库
LiveNVR 默认使用 sqlite3 文件数据库, 当接入通道数量达到万级时, 文件数据库会拖慢系统;
这时我们建议使用 MariaDB(推荐) 或 MySQL(5.7及以上) 数据库, 数据库服务需要您提前安装好, 切换到 MariaDB 数据库很简单:
(注意:数据库的默认引擎应为InnoDB, 查询命令: show engines)
第一步 连接数据库
客户端连接 或 命令如 :
mysql -h127.0.0.1 -uxxx -pyyy -P3306
第二步 创建数据库实例
DROP DATABASE IF EXISTS `livenvr`; CREATE DATABASE IF NOT EXISTS `livenvr` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; USE `livenvr`;
第三步 配置 livenvr.ini > [db] > MariaDB/MySQL 连接信息(其中 dialect 固定为 mysql)
[db] dialect=mysql url=username:password@(ip:port)/livenvr?charset=utf8&parseTime=True&loc=Local
第四步 重启 LiveNVR 服务, 系统自动完成建表操作, 至此, 数据库切换完成
开启输出 RTSP 流
登录 LiveNVR 界面, 配置 RTSP 端口即可 => [基础配置] > [LiveNVR 基础配置] > RTSP 端口
注意
在 Linux 下面开启 554 端口通常需要 root 权限, 需要以 sudo
来运行 livenvr 服务程序
拉取一路直播流 /api/v1/getchannelstream?channel=4&protocol=RTSP
, 带参数 protocol=RTSP
, 返回结果中包含了这一路直播流的 RTSP 流地址, 这个 RTSP 地址可以用 ffplay 来播放
开启 HTTPS 服务
配置 LiveNVR 开启 HTTPS
livenvr.ini > [https] > 配置证书路径和 LiveNVR HTTPS 端口
以上配置操作完成后, 重启 LiveNVR, 浏览器访问 https://{证书域名}:{LiveNVR HTTPS 端口} 验证 HTTPS 是否开启成功
苹果手机起播慢?
由于 HLS 协议就是一种先切片-后播放的原则,也就是需要切片好大概3个ts文件的时候,苹果端播放器才开始进行播放动作,假设单个切片最小设置成2s,那么这个切片过程+下载过程的总时长将会大于6s,这就导致很多播放器等待时间过长,进而播放成功率不高,建议可以设置每一个摄像机通道的 “按需直播” 不勾选,这样就能保证通道一直在切片,播放起播也就很快了!
“FLASH:rtmpconnectfailure”
出现的原因是rtmp流连接失败。
解决方法:看看访问的rtmp的端口(默认10935)是否映射出来;
软件包不要存放在中文文件夹路径下;
以及nvrnginx是否被一些保护软件隔离或者误杀。
关于集成直播页面
首先LiveNVR自身直播页面提供iframe集成相关代码, 其次我们也支持通过直接调用分享地址传递参数集成,传递对应参数获取对应功能
iframe:是否以iframe形式嵌入,支持传递参数yes、no;
autoplay:是否开启自动直播,支持传递参数yes、no;
stretch:是否拉伸显示,支持传递参数yes、no;
aspect:播放器的比例,传递形式x:y,默认16:9, aspect=fullscreen时, 整页显示播放器
例: ip:port/play.html?channel=id&iframe=yes&aspect=4:3&autoplay=yes&stretch=yes
云台控制按钮没有(灰掉)
因为在这个摄像机通道配置中,摄像机接入类型必须是 Onvif 类型,摄像机才能有控制功能,前端页面的按钮才会显示(可用);
接口返回 401 Unauthorized
操作: 登录,登陆后会返回token,以后调用接口需要在cookie中携带token信息“token=a19cb5f6e7d2449d8d24c8a0fc554ca7”
{
"LiveQing" : {
"Body" : {
"Token" : "a19cb5f6e7d2449d8d24c8a0fc554ca7"
},
"Header" : {
"CSeq" : "1",
"ErrorNum" : "200",
"ErrorString" : "Success OK",
"MessageType" : "MSG_SC_SERVER_LOGIN_ACK",
"Version" : "1.0"
}
}
}
Linux 非 root 用户启动和停止
注意
安装成系统服务的时候必须root权限,但是有时没有root权限,可以进行如下处理
启动脚本
#!/bin/bash
CWD=$(cd "$(dirname $0)";pwd)
nohup "$CWD"/livenvr >/dev/null 2>&1 &
停止脚本
#!/bin/bash
CWD=$(cd "$(dirname $0)";pwd)
kill -INT `pidof livenvr`
如何更新升级?
先上传部署包到服务器, 再解压
停止运行老服务(如果已开启云端录像, 建议将云端录像目录配置到版本目录外面)
拷贝老服务运行目录下的 *.db 和 *.ini 文件到新解压目录
在新解压目录下, 启动新服务
忘记登录密码
可以在命令行下运行 LiveNVR 可执行程序, 带 resetpass
参数来重置密码
Windows
./LiveNVR.exe resetpass
Linux
./livenvr resetpass