LiveGBS 常见问题

设备不支持国标

不支持国标协议的设备, 在做国标协议对接时, 推荐使用 LiveNVR 国标级联方案, 先通过 RTSP 、 ONVIF 协议、 厂家 SDK 将设备接入 LiveNVR, 然后配置 LiveNVR 级联国标平台即可. LiveNVR 支持 TCP 流传输模式, 实现稳定的播放效果. 也可以采用国标硬盘录像机硬件方案, 先将设备接入支持国标协议的硬盘录像机, 然后配置级联国标平台.

页面打不开

LiveCMS 和 LiveSMS 都部署起来后,浏览器输入 ip:10000 打不开 LiveCMS 的页面。这种情况一般是LiveCMS 的10000端口被其他程序占用了导致。可以先卸载 LiveCMS,打开 livecms.ini 文件,把 http端口从 10000 改成 10002 或其他端口,再重新安装 LiveCMS。

设备注册不上来

网页打开后, 看不到设备注册上来

  • 检查设备注册信息无误, 接入密码正确填写.

  • 检查防火墙是否关闭.

  • 检查 SIP 端口(livecms.ini > [sip] > port, 默认 15060) UDP & TCP 是否开放.

直播流地址格式

WEBRTC: webrtc[s]://{cms_ip}:{cms_http[s]_port}/sms/{sms_id}/rtc/{设备国标编号}_{通道国标编号}

FLV: http[s]://{cms_ip}:{cms_http[s]_port}/sms/{sms_id}/flv/hls/{设备国标编号}_{通道国标编号}.flv

WS_FLV: ws[s]://{cms_ip}:{cms_http[s]_port}/sms/{sms_id}/ws-flv/hls/{设备国标编号}_{通道国标编号}.flv

HLS: http[s]://{cms_ip}:{cms_http[s]_port}/sms/{sms_id}/hls/{设备国标编号}_{通道国标编号}/live.m3u8

RTMP: rtmp://{sms_ip}:{rtmp_port}/hls/{设备国标编号}_{通道国标编号}

RTSP: rtsp://{sms_ip}:{rtsp_port}/{设备国标编号}_{通道国标编号}

提示

如果需要通过直播流地址直接拉流, 而不是通过 开始直播接口, 请开启【基础配置】>【允许直播地址拉流】

播放花屏、卡顿

播放视频时概率性出现花屏、卡顿等问题时,一般是由于设备端视频向服务端传输时网络跟不上导致,可以在设备端的配置页面,把视频的码率降低。一般公网播放的话建议码率设置到256-1024kbps之间。如果码率太高,设备端上行带宽很可能跟不上。

其次, 可以将流传输模式改为 TCP 被动 来改善播放效果: LiveGBS 界面, 右上角登录后, 进入国标设备列表, 在列表视图找到 流传输模式 列, 下拉调整.

注意

TCP 被动 流传输模式需要设备支持, 同时要求默认的 TCP 30000-30249 收流端口区间开放, 如果以上条件不满足, 以 TCP 被动模式拉流, 将获得错误信息 "none rtp data receive"

支持录像回放吗?

LiveGBS 支持三种形式的录像, 我们称之为 设备录像, 云端录像, 实时录像

  • 设备录像

    【国标设备】>【查看通道】>【设备录像】访问, GB28181 国标协议范围内的录像, 存储在设备SD卡或硬盘录像机, 可通过 LiveGBS 前端设备录像 接口 /api/v1/playback/start 拉取

  • 云端录像

    【国标设备】>【查看通道】>【云端录像】开启后, 只要拉流上来, 就会持续录像, 录像的起停跟随直播流的起停, 存储在服务器, 支持指定存储目录 >【基础配置】>【流媒体服务配置】>【云录像目录】, 存储格式是 HLS, 可通过 LiveGBS 云端录像 接口 下载为 MP4

  • 实时录像

    是在直播过程中, 手动或者通过 LiveGBS 实时录像 接口 /api/v1/record/start 触发的录像, 存储在服务器, 存储格式是 MP4

“sms not found”

排查 LiveSMS 服务是否正常运行,livesms.ini > [redis] > host 是否指向 LiveCMS 所在的 redis-server

"invite sms[xx] wait response error"

LiveCMS 访问不到 LiveSMS

  • 检查 WEB管理后台 >【基础配置】>【流媒体服务配置】>【本地|内网 IP】是否配置为 LiveCMS 可访问的IP

  • 检查 WEB管理后台 >【基础配置】>【流媒体服务配置】>【显示更多配置】>【SMS 端口】是否配置为 LiveCMS 可访问的端口

提示

若 LiveCMS 和 LiveSMS 部署在同一台服务器上,可尝试修改配置如下:LiveGBS后台 >【基础配置】>【流媒体服务配置】>【本地|内网 IP】填 127.0.0.1,【外网 IP(可选)】填下级可访问的IP,勾选上【外网 IP 收流】。

"invite device[xx] failed, res..."

LiveCMS 向下级设备拉流失败, res 后面是下级设备回复内容。 如果下级是海康 NCG 联网网关, 可通过 LiveCMS 信令日志查找到详细的报错信息。 根据报错信息,向下级平台咨询失败原因。

如果是 "res[503] Service Unavailable" 一般是由于下级硬盘录像机上通道离线导致。

如果是 "res[415] Unsupported Media Type" 并且正在调阅设备录像(/api/v1/playback/start), 一般是对应的时间段在下级设备上没有录像存储导致。

“none rtp data receive”

LiveSMS 收不到下级推流, 首先需要排查服务器端 UDP & TCP 30000-30249 端口是否开放。 其次排查 WEB管理后台 >【基础配置】>【流媒体服务配置】>【本地|内网 IP】是否配置为下级可访问的IP。如果勾选了【外网 IP 收流】,则检查 【外网 IP(可选)】是否配置为下级可访问的IP。

提示

若 LiveCMS 和 LiveSMS 部署在同一台服务器上,可尝试修改配置如下:LiveGBS后台 >【基础配置】>【流媒体服务配置】>【本地|内网 IP】填 127.0.0.1,【外网 IP(可选)】填下级可访问的IP,勾选上【外网 IP 收流】。

"invalid rtp payload type[xx]"

LiveSMS 收到下级不标准的国标推流, 可以配置 livesms.ini > [rtp] > strict_payload_type=0 来关闭校验。

开启输出 RTSP 流

登录 LiveGBS 界面, 配置 RTSP 端口即可 >【基础配置】>【流媒体服务配置】>【RTSP 端口】

注意

在 Linux 下面开启 554 端口通常需要 root 权限, 需要以 sudo 来运行 livesms 服务程序

拉取一路直播流 /api/v1/stream/start, 或通过接口 /api/v1/stream/list 查看流信息, 其中包含了这一路直播流的 RTSP 流地址, 如图

RTSP接口示例

这个 RTSP 地址可以用 ffplay 来播放

RTSP播放示例

开启 HTTPS 服务

  • 配置 LiveCMS 开启 HTTPS

    【基础配置】>【信令服务配置】>【HTTPS 端口(可选)】、【HTTPS Cert 证书路径】、【HTTPS Key 证书路径】

  • 验证 HTTPS

    浏览器访问 https://{证书域名}:{LiveCMS HTTPS 端口} 验证 HTTPS 是否开启成功

切换数据库

LiveGBS 默认使用 sqlite3 文件数据库, 当接入通道数量达到万级时, 文件数据库会拖慢系统;

这时我们建议使用 MariaDB(推荐) 或 MySQL(5.7及以上) 数据库, 数据库服务需要您提前安装好, 切换到 MariaDB 数据库很简单:

(注意:数据库的默认引擎应为 InnoDB,查询命令: show engines)

  • 第一步 连接数据库

    客户端连接 或 命令如 :

    mysql -h127.0.0.1 -uxxx -pyyy -P3306
    
  • 第二步 创建数据库实例(整段复制下面的建库SQL并执行,不要去除注释部分的字符集设定!)

    DROP DATABASE IF EXISTS `livegbs`;
    CREATE DATABASE IF NOT EXISTS `livegbs` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
    USE `livegbs`;
    
  • 第三步 配置 livecms.ini > [db] > MariaDB/MySQL 连接信息(其中 dialect 固定为 mysql)

    [db]
    dialect=mysql
    url=username:password@(ip:port)/livegbs?charset=utf8mb4&parseTime=True&loc=Local
    
  • 第四步 重启 LiveCMS 服务, 系统自动完成建表操作, 至此, 数据库切换完成

配置了国标级联, 上级看不到通道?

配置上级级联的时候, 有个 选择通道 的 button, 选择哪些通道共享给上级, 这个地方, 记得进去勾选一下, 否则上级看不到通道

国标级联_选择通道

如何部署多个 LiveSMS 集群?

部署多个 LiveSMS 有助于提升视频流分发性能, 可部署LiveSMS在不同服务器上, 配置 livesms.ini redis 指向同一个 livecms 节点即可:

[sip]
; 配置不重复的 SIP ID
serial=34020000002020000002

[redis]
; 指向部署 CMS Redis 服务器的ip,如
host=192.168.1.65
port=26379
password=livegbs@2019

配置CAS单点登录

LiveGBS 支持 CAS 单点登录, 配置 livecms.ini > [cas] 如下:

[cas]
; 单点登录页面地址
login_url=https://ip[:port]/cas/login
; ticket 校验地址
check_url=https://ip[:port]/cas/serviceValidate
; 登出地址
logout_url=https://ip[:port]/logout
; 单点登录用户默认角色(超级管理员/管理员/操作员/观众)
default_user_role=观众
; 单点登录用户默认是否拥有所有通道权限(1-是, 0-否)
default_user_has_all_channel=0
; 默认超级管理员用户(可选)
super_admin_user=admin0101
; 默认管理员用户(可选)
admin_user=admin0201,admin0202
; 默认拥有所有通道权限用户(可选)
all_channel_user=admin0201,admin0202

配置OAuth单点登录

LiveGBS 支持 OAuth 单点登录, 以 Github 为例,配置 livecms.ini > [oauth] 如下:

[oauth]
; 单点登录地址
login_url=https://github.com/login/oauth/authorize
; login_url=https://gitee.com/oauth/authorize
; TOKEN 校验地址
token_url=https://github.com/login/oauth/access_token
; token_url=https://gitee.com/oauth/token
; 用户信息接口地址
user_url=https://api.github.com/user
; user_url=https://gitee.com/api/v5/user
; 登出地址(可选)
logout_url=https://github.com/logout
; 单点登录客户端ID
client_id=LiveGBS
; 单点登录客户端密码
client_secret=123456
; 单点登录用户默认角色(超级管理员/管理员/操作员/观众)
default_user_role=观众
; 单点登录用户默认是否拥有所有通道权限(1-是, 0-否)
default_user_has_all_channel=0

提示

Github 创建第三方应用示例 ( https://github.com/settings/applications/new )

  • "Application name" LiveGBS

  • "Homepage URL" http://ip:10000/

  • "Authorization callback URL" http://ip:10000/oauthlogin

接口返回 401 Unauthorized

原因:【基础配置】>【HTTP 接口鉴权】开启, 接口调用会验证是否携带有效的 token

方法一:先调用 登录接口,登录后会返回 token,以后的接口调用携带 token 信息

方法二:【基础配置】>【HTTP 接口鉴权】关闭,不推荐

Linux 非 root 用户启动和停止

注意

安装成系统服务的时候必须 root 权限,但是有时没有 root 权限,可以进行如下处理

CMS 启动脚本

#!/bin/bash
CWD=$(cd "$(dirname $0)";pwd)
nohup "$CWD"/livecms > /dev/null 2>&1 &

CMS 停止脚本

#!/bin/bash
CWD=$(cd "$(dirname $0)";pwd)
pid=`pidof livecms`
[ -n "$pid" ] && kill -INT "$pid"

SMS 启动脚本

#!/bin/bash
CWD=$(cd "$(dirname $0)";pwd)
nohup "$CWD"/livesms > /dev/null 2>&1 &

SMS 停止脚本

#!/bin/bash
CWD=$(cd "$(dirname $0)";pwd)
pid=`pidof livesms`
[ -n "$pid" ] && kill -INT "$pid"

如何更新升级?

  • 先上传部署包到服务器, 再解压

  • 停止运行老服务(如果已开启云端录像, 建议将云端录像目录配置到版本目录外面)

  • 拷贝老服务运行目录下的 *.db 和 *.ini 文件到新解压目录(livecms.db, livecms.ini, livesms.ini)

  • 在新解压目录下, 启动新服务

服务器硬件配置

服务器配置

WEB 播放器

播放器下载

详细介绍

播放鉴权

与您业务系统鉴权对接, 配置文件位置:LiveCMS 安装包解压目录 > livecms.ini > [sip] > stream_auth_url

此处填写您业务系统提供的鉴权地址

填写示例: stream_auth_url=http://yourhost:port/playauth

流程说明:

  • 用户请求播放地址

    示例如: http://localhost:10001/flv/hls/t.flv?param1=111&param2=222

    其中param1和param2是附加的任意传参,名称不限

  • LiveGBS 系统会GET请求回调上面stream_auth_url地址的接口,并透传附加的参数

    示例如:http://yourhost:port/playauth?param1=111&param2=222

    等待您的鉴权接口的返回:

    • 成功:200 (Status Code)

    • 失败:401

    LiveGBS 判断返回的鉴权结果:

    • 成功 : 开始播放

    • 失败 : 阻止播放

忘记登录密码

可以在命令行下运行 LiveCMS 可执行程序, 带 resetpass 参数来重置密码

Windows

.\LiveCMS.exe resetpass

Linux

./livecms resetpass

停止服务, 重新启动后生效

解锁登录

可以在命令行下运行 LiveCMS 可执行程序, 带 unlock [username] 参数来为指定用户解锁登录

Windows

.\LiveCMS.exe unlock admin

Linux

./livecms unlock admin

如果是其他用户登录被锁定,管理员可以登录系统操作 >【用户管理】>【编辑用户】或者【重置用户密码】来为指定用户解锁登录