灵派编码器HTTP API接口说明

本文镜像:https://blog.csdn.net/weixin_45326556/article/details/123679784
本文链接:https://linkpi.cn/archives/1388

1. 概要及免责声明

    灵派编码器的后台是PHP实现的,若有定制需求,可以自行修改其源码,灵派编码器的后台源程序参见https://gitee.com/LinkPi/Encoder/tree/web。 有些用户需要在自己的服务器或者自己编写的软件中控制编码器,则可以通过调用灵派编码器HTTP API接口来完成。为了方便论述,我们把灵派编码器HTTP API接口定义为LPH接口。
    由于产品版本升级或其他原因,本文档内容会持续更新. 除非另有约定,本文档仅作为使用指导,本文档中的所有陈述信息和建议不构成任何明示或暗示的担保。

2. 设计说明

2.1 LPH协议介绍

LPH协议是一种定义于 HTTP 之上的 API 接口,其本质仍属于HTTP协议,LPH协议在HTTP基础上,增加了Digest认证和登录验证的交互过程。

2.2 LPH协议交互过程说明

2.2.1 通信交互过程

LPH命令的带Digest认证的HTTP 交互过程和标准HTTP交互过程主要区别如下:
file
LPH协议目前只支持Digest 认证流程,默认认证用户名密码均为admin。
下面我们通过postman作为客户端来说明一次通信过程,这里以登录(/link/user/lph_login)为例。
(1) 首先我们启动postman,并如下图打开postman控制台工具,并清空控制台信息
file
(2)创建一个请求,url为 /link/user/lph_login,请求方式GET/POST都可以,并设置好传递的参数,这里以GET请求为例,如下图
file
(3)设置postman Http认证方式,并设置用户名和密码,如下图
file
(4)点击Send按钮发送请求,然后打开postman 控制台工具,可以看到2条请求记录,如下图
file
(5)通过对比,我们可以看到,第一次客户端向服务器发送请求,服务器返回401,并在响应头中携带了
WWW-Authenticate认证信息,postman客户端拿到认证信息后,计算出Authenticate并加入到请求头中,再次发送。
file
(6)服务器认证通过后,会返回请求结果,如下图
file
(7)需要注意的是,登录成功后,需要保存该会话的Cookie,来保持该会话的有效性,Cookie获取方式如下图
file

2.2.2 LPH协议API调用过程

通过2.2.1的例子已经知道,在通信过程中需要Authorization头信息,但是除登录请求外的请求头不仅要带上 Authorization信息还要带上登录获取的 3 组 HASH 值,才能请求成功。

这里通过获取系统时间简单说明交互流程:
(1) 发送请求首先要登录服务器 /link/user/lph_login
(2) 登录后才会发送 /link/system/get_sys_date 获取系统时间
(3) 获取信息后登出 /link/user/lph_logout

如下图,登录成功后,在调用获取系统时间接口的请求头中添加3个HASH值,以及会话的Cookie值,此时就可以拿到正确的请求结果。
file

3. LPH协议API说明

3.1 登录请求 /link/user/lph_login

请求类型:GET / POST
参数

参数名 字段类型 是否必传 描述
username string 是 登录用户名,同登录web用户名一致
passwd string 是 登录密码,同登录web密码一致,需要md5加密后传输

响应

{
    "data": {
        "L-HASH": "0b3bb1f7fcdffc5ea1077090b9bbc43314fa4268",
        "P-HASH": "29a07d69a3e5f9b8ef42eee9d5a837af2ff0f403",
        "H-HASH": "9d181efb0c1b606f5a7fef2a45b1385a447794f3"
    },
    "status": "success",
    "msg": "登录成功"
}

3.2 登出请求 /link/user/lph_logout

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": "",
    "status": "success",
    "msg": "登出成功"
}

3.3 获取系统状态信息 /link/system/get_sys_state

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": {
        "cpu": 17, //cpu百分比使用率
        "mem": 41, //内存百分比使用率
        "temperature": 42 //核心温度,摄氏度
    },
    "status": "success",
    "msg": "执行完成"
}

3.4 获取系统网络状态 /link/system/get_net_state

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": {
        "rx": 0, //网络下行
        "tx": 0  //网络上行
    },
    "status": "success",
    "msg": "执行完成"
}

3.5 获取HDMI/SDI通道接口状态 /link/system/get_vi_state

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": [
        {
            "avalible": true,       //是否有hdm/sdi输入源接入
            "framerate": 50,        //帧率
            "full": false,
            "height": 1080,         //视频高
            "interlace": false,    //是否隔行扫描
            "protocol": "HDMI",    //输入源类型
            "samplerate": 48000,   //音频采样率
            "width": 1920           //视频宽
        },
          …………
    ],
    "status": "success",
    "msg": "执行完成"
}

3.6 获取网络配置信息 /link/system/get_network

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": {
        "ip": "192.168.1.213",
        "mask": "255.255.252.0",    //掩码
        "gateway": "192.168.1.1",   //网关
        "dns": "8.8.8.8",
          "mac": "886570e99627"
        "dhcp": false
    },
    "status": "success",
    "msg": "执行完成"
}

3.7 设置网络配置 /link/system/set_network

请求类型:GET / POST
参数

参数名 字段类型 是否必传 描述
ip string 否 ip地址
mask string 否 子网掩码
gateway string 否 网关
dns string 否 dns
dhcp bool 否 是否自动获取ip,值为true时将忽略其他参数

响应
无返回值

3.8 获取系统时间 /link/system/get_sys_date

请求类型:GET / POST
参数

参数名 字段类型 是否必传 描述
无 无 无 无

响应

{
    "data": "2021-11-11 03:37:28",
    "status": "success",
    "msg": "执行完成"
}

3.9 设置系统时间 /link/system/set_sys_date

请求类型:GET / POST
参数

参数名 字段类型 是否必传 描述
sysDate string 是 参数格式是且仅是:"yyyy/MM/dd/hh/mm/ss"

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.10 获取ntp服务信息 /link/system/get_ntpd

请求类型:GET / POST
参数

参数名 字段类型 是否必传 描述
无 无 无 无

响应

{
    "data": {
        "server": "cn.pool.ntp.org",   //ntp服务器地址
        "enable": false                   //开机是否同步ntp服务器时间
    },
    "status": "success",
    "msg": "执行完成"
}

3.11 设置ntp服务 /link/system/set_ntpd

请求类型:GET / POST
参数

参数名 字段类型 是否必传 描述
server string 否 Ntp服务器地址,如cn.pool.ntp.org
enable bool 否 开机时是否同步ntp时间
sync bool 否 是否立即同步一次ntp时间

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.12 获取视频通道编码信息 /link/encoder/get_enc_confs

请求类型:GET / POST
参数

参数名 字段类型 是否必传 描述
无 无 无 无

响应

{
    "data": [
        {
            "id": 0, //通道id
            "name": "HDMI",  //通道名称
            "type": "vi",  //通道类型,共有vi usb net mix4种
            "enable": true,  //通道总开关,主码流编码开关
            "enable2": false, //子码流编码开关
            "encv": {  //主码流编码参数
                "Iqp": 25,  //I帧量化因子
                "Pqp": 25,  //P帧量化因子
                "bitrate": 4000, //码率 kb/s
                "codec": "h264",  //编码格式
                "framerate": 30, //帧率
                "gop": 2, //gop长度
                "gopmode": 0, //海思gop模式,0--Normal 1--SmarP 2--DualP 3--Bipred
                "height": 1080, //视频高
                "lowLatency": false, //是否低延时编码
                "maxqp": 36, //最大量化因子
                "minqp": 22, //最小量化因子
                "profile": "main", //编码压缩方式
                "rcmode": "cbr", //码率控制
                "width": 1920 //视频宽
            },
            "encv2": {   //子码流参数,同encv
                "Iqp": 25,
                "Pqp": 25,
                "bitrate": 1000,
                "codec": "h264",
                "framerate": 30,
                "gop": 1,
                "gopmode": 0,
                "height": 360,
                "lowLatency": false,
                "maxqp": 36,
                "minqp": 22,
                "profile": "high",
                "rcmode": "avbr",
                "width": 640
            },
            "enca": { //音频编码参数
                "audioSrc": "hdmi", //使用的音频源
                "bitrate": 128, // 码率 kb/s
                "channels": 1,  //声道 1代表单声道,2代表立体声
                "codec": "aac",  //音频编码格式
                "gain": 6, //声音增益
                "samplerate": 48000 //采样率
            },
            "cap": {  //视频参数,该属性为vi通道(HDMI/SDI)特有属性,其他通道不存在
                "crop": {
                    "B": 0,  //视频下采集,单位像素
                    "L": 0, //视频左采集,单位像素
                    "R": 0, //视频右采集,单位像素
                    "T": 0  //视频上采集,单位像素
                },
                "deinterlace": false, //是否全帧去隔行
                "rotate": 0  //旋转角度
            },
"net": {  //网络输入,该属性为net通道特有属性,其他通道不存在
                "bufferMode": 0,  //缓冲模式
                "decodeA": false,  //是否音频解码
                "decodeV": false, //是否视频解码
                "framerate": -1, //帧率
                "minDelay": 500, //缓冲时间,单位毫秒
                "path": "rtsp://192.168.2.182/1", //网络流地址
                "protocol": "tcp" //传输协议
            }
        },
…………
    ],
    "status": "success",
    "msg": "执行完成"
}

3.13 更新网络输入源参数 /link/encoder/set_net_chns

请求类型:POST
参数

参数类型 描述
string 参数为JsonArray字符串,示例如下表

参数示例

[
    {
        "id":2,
        "path":"rtsp://192.168.2.180/1",
        "decodeV":true,
        "enable":true
},
…………
NetObject,
NetObject
]

NetObject对象属性见下表

属性名 字段类型 是否必传 描述
id int 是 通道id
name string 否 通道名称
path string 否 网络流地址
bufferMode int 否 缓冲模式 0: 一般 1: 实时 2:同步
minDelay int 否 缓冲时间,单位毫秒
protocol string 否 传输协议,tcp\upd
framerate int 否 帧率
decodeV bool 否 是否视频解码
decodeA bool 否 是否音频解码
enable bool 否 通道总开关,是否开启流
enable2 bool 否 是否开启子码流,视频解码开启时有效

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.14 设置输入源编码参数 /link/encoder/set_enc_chns

请求类型:POST
参数

参数类型 描述
string 参数为JsonArray字符串,示例如下表

参数示例

[
    {
        "id":2,
        "name":"HDMI",
        "enable":true,
        "enable2":false,
        "encv":{
            "width":1920,
            "height":1080,
            "codec":"h264",
            "profile":"main",
            "rcmode":"cbr"
        },
        "encv2":{
            "width":640,
            "height":360        
}
    },
…………
ChnObject
]

ChnObject对象属性见下表

参数名称 字段类型 是否必传 描述
id int 是 通道id
name string 否 通道名称
enable bool 否 通道总开关,主码流编码开关
enable2 bool 否 子码流编码开关
encv EncObject 否 主码流编码参数,对象类型,属性见下表
encv2 EncObject 否 子码流编码参数,对象类型,属性见下表

EncObject

属性名 字段类型 是否必传 描述
width int 否 视频宽,值为-1时,即使用输入源默认宽
height int 否 视频高,值为-1时,即使用输入源默认高
codec string 否 编码方式,可选值:h264 h265 close
profile string 否 编码压缩方式,可选值:base main high
rcmode string 否 码率控制,可选值cbr vbr avbr fixqp
bitrate string 否 码率kb/s
framerate string 否 帧率
gop int 否 gop长度
gopmode int 否 海思GOP模式,0--Normal 1--SmarP 2--DualP 3--BipredB
minqp Int 否 最小量化因子
maxqp int 否 最大量化因子
Iqp int 否 I帧量化因子
Pqp int 否 P帧量化因子
lowLatency bool 否 是否低延时编码

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.15 设置HDMI/SDI裁剪旋转视频参数 /link/encoder/set_cap_chns

请求类型: POST
参数

参数类型 描述
string 参数为JsonArray字符串,示例如下表

参数示例

[
    {
        "id":2,
        "L":"200",
        "rotate":90,      
    },
…………
CapObject
]

CapObject对象属性见下表

属性名 字段类型 描述
id int 通道id
deinterlace bool 是否全帧去隔行
rotate int 视频旋转,可选值0 90 180 270
L int 视频裁决左,单位像素
R int 视频裁决右,单位像素
T int 视频裁决上,单位像素
B int 视频裁决下,单位像素

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

2.16 设置音频编码参数 /link/encoder/set_audio_chns

请求类型:POST
参数

参数类型 描述
string 参数为JsonArray字符串,示例如下表

参数示例

[
    {
        "id":2,
        "codec":"aac",
        " audioSrc":"hdmi",
          " gain":"6"     
    },
…………
AudioObject
]

AudioObject对象属性见下表

属性名 字段类型 描述
id int 通道id
codec string 编码格式,可选值 aac pcma mp2 mp3 opus close
audioSrc string 音频来源,可选值hdmi sdi line
gain int 声音增益,可选值-24 -18 -12 -6 0 6 12 18 24
samplerate int 采样率,可选值 16000 32000 44100 48000 -1(-1代表自动)
channels int 声道,可选值1—单声道 2—立体声
bitrate int 码率 kb/s

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.17 获取视频流输出配置 /link/stream/get_stream_confs

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": [
        {
            "id": 0,   //通道id
            "name": "HDMI", //通道名称
            "type": "vi",  //通道类型
              "enable": true,  //通道总开关,主码流开关
              "enable2": false,  //子码流开关
            "stream": {  //主码流输出
                "hls": false,  //输出hls流开关
                "http": true,  //输出tsHttp流开关
                "push": {  //推流参数
                    "enable": false,  //是否开启推流
                    "format": "auto", //封装格式
                    "hevc_id": 12, //rtmp输出时,h265数据使用的id号
                    "path": "rtmp://127.0.0.1/live/test_main0" //推流地址
                },
                "rtmp": true, //输出rtmp流开关
                "rtsp": true, //输出rtsp流开关
                "srt": { //srt流参数
                    "enable": false, //是否开启rtsp流
                    "ip": "127.0.0.1", //ip地址
                    "latency": 50, //延时
                    "mode": "listener", //模式
                    "passwd": "", //密码
                    "port": 9001, //端口
                    "streamid": "" // stream id
                },
                "udp": {  //组播参数
                    "bandwidth": 100, //流控最大带宽
                    "enable": false, //是否开启组播
                    "flowCtrl": true, //是否开启流控
                    "ip": "233.233.2.1", //地址
                    "port": 3000,  //端口
                    "rtp": false, //是否增加rtp头
                    "ttl": 5 //ttl
                }
            },
            "stream2": {  //子码流输出,参数主码流输出
                "hls": false,
                "http": true,
                "push": {
                    "enable": false,
                    "format": "auto",
                    "hevc_id": 12,
                    "path": "rtmp://127.0.0.1/live/test_sub0"
                },
                "rtmp": true,
                "rtsp": true,
                "srt": {
                    "enable": false,
                    "ip": "127.0.0.1",
                    "latency": 50,
                    "mode": "listener",
                    "passwd": "",
                    "port": 9101,
                    "streamid": ""
                },
                "udp": {
                    "bandwidth": 100,
                    "enable": false,
                    "flowCtrl": true,
                    "ip": "233.233.3.1",
                    "port": 3000,
                    "rtp": false,
                    "ttl": 5
                }
            }
        },
    …………
    ],
    "status": "success",
    "msg": "执行完成"
}

3.18 设置视频流输出配置 /link/stream/set_stream_confs

请求类型: POST
参数

参数类型 描述
string 参数为JsonArray字符串,示例如下表

参数示例

[
    {
        "id":0,
        "stream":{
            "hls":true,
            "http": false,
            "rtsp":true,
            "udp":{
                "enable":true
            }
        },
        "stream2":{
            "rtmp":true,
            "http":false,
            "hls":false,
            "push":{
                "enable":true,
                "path":"rtmp://192.168.2.110/live/main"
            },
            "udp":{
                "enable":false
            }
        }
},
ChnObject,
ChnObject,
ChnObject,
…………
]

ChnObject

属性名 字段类型 是否必传 描述
id int 是 通道id
stream StreamObject 否 主码流输出参数
Stream2 StreamObject 否 子码流输出参数

StreamObject

属性名 字段类型 是否必传 描述
hls bool 否 是否输出hls流
http bool 否 是否输出http流
rtmp bool 否 是否输出rtmp流
rtsp bool 否 是否输出rtsp流
push PushObject 否 推流配置参数
udp UdpObject 否 udp组播配置参数
srt SrtObject 否 srt流配置参数

PushObject

属性名 字段类型 是否必传 描述
enable bool 否 是否开启推流
format string 否 封装格式,值可为auto flv rtsp rtp mpegts rtp_mpegts
hevc_id int 否 rtmp输出时,h265数据使用的id号
path string 否 推流地址

UdpObject

属性名 字段类型 是否必传 描述
bandwidth int 否 流控最大带宽,单位Mb
enable bool 否 是否开启组播
flowCtrl bool 否 流控,让码流发送更均匀,防止丢包,但是消耗一些性能
ip string 否 地址
port int 否 端口
rtp bool 否 是否增加rtp头
ttl int 否 ttl

SrtObject

属性名 字段类型 是否必传 描述
latency int 否 延时
enable bool 否 是否开启srt流
mode string 否 模式,caller listener rendezvous
ip string 否 地址
port int 否 端口
passwd string 否 密码
streamid int 否 流id

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.19 获取hls ndi ts 配置信息 /link/stream/get_hls_ndi_ts

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": [
        {
            "id": 0,   //通道id
            "name": "HDMI", //通道名称
            "type": "vi",  //通道类型
              "enable": true,  //通道总开关,主码流编码是否启用
              "enable2": true,  //子码流编码否启用
            "hls": {
                "hls_base_url": "/hls/",  //url前缀
                "hls_filename": "-%06d.ts",  //文件名后缀
                "hls_list_size": 5,  //列表长度
                "hls_time": 5  //分片长度
            },
            "ndi": {
                "enable": false,  //开关
                "group": "",   //NDI 分组
                "name": "stream0"  //NDI 名称
            },
            "ts": {
                "mpegts_original_network_id": 1, //network id
                "mpegts_pmt_start_pid": 4096, //pmt pid
                "mpegts_service_id": 1, // service id
                "mpegts_start_pid": 100, // pid
                "mpegts_transport_stream_id": 1, //stream id
                "tsSize": 1316  //packet size
            }
        }
    ],
    "status": "success",
    "msg": "执行完成"
}

3.20 设置hls ndi ts 配置信息 /link/stream/set_hls_ndi_ts

请求类型: POST
参数

参数类型 描述
string 参数为JsonArray字符串,示例如下表

参数示例

[
    {
        "id":0,
        "hls":{
            "hls_time":5,
            "hls_list_size":5
        },
        "ndi": {
            "enable":true,
            "name":"stream0"
        },
        "ts": {
            "mpegts_pmt_start_pid":4096,
            "mpegts_original_network_id":1,
            "mpegts_start_pid":100
        }
    }
,
ChnObject,
ChnObject,
ChnObject,
…………
]

ChnObject

属性名 字段类型 是否必传 描述
id int 是 通道id
hls HlsObject 否 hls输出参数
ndi NdiObject 否 ndi输出参数
ts TsObject 否 ts输出参数

HlsObject

属性名 字段类型 是否必传 描述
hls_base_url string 否 url前缀
hls_filename string 否 文件名后缀:如-%06d.ts
hls_list_size int 否 m3u8文件分片列表长度
hls_time int 否 分片长度,单位秒

NdiObject

属性名 字段类型 是否必传 描述
enable bool 否 开启/关闭
group string 否 NDI分组
name string 否 NDI名称

TsObject

属性名 字段类型 是否必传 描述
mpegts_original_network_id int 否 network id
mpegts_pmt_start_pid int 否 pmt pid
mpegts_service_id int 否 service id
mpegts_start_pid int 否 pid
mpegts_transport_stream_id int 否 stream id
tsSize int 否 packet size

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.21 获取多平台直播配置信息 /link/stream/get_platform_lives

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": {
        "autorun": false,  //是否自动启动
        "srcA": 0,  //音频源
        "srcV": 0,  //视频源
        "url": [
            {
                "des": "直播平台1", //描述
                "enable": true,  //是否开启
                "path": "rtmp://127.0.0.1/live/push1" //推流地址
            },
            {
                "des": "直播平台2",
                "enable": true,
                "path": "rtmp://127.0.0.1/live/push2"            },
            {
                "des": "直播平台3",
                "enable": false,
                "path": "rtmp://127.0.0.1/live/push3"            }
        ]
    },
    "status": "success",
    "msg": "执行完成"
}

3.22 设置多平台直播配置信息 /link/stream/set_platform_lives

请求类型: POST
参数

属性名 字段类型 是否必传 描述
autorun bool 否 是否自动开启
srcA int 否 音频源
srcV int 否 视频源
url array 否 地址集合,里面存放UrlObject对象

UrlObject

属性名 字段类型 是否必传 描述
des string 是 平台描述
enable bool 是 使用启用
path string 是 地址

参数示例

{
        "autorun": false,
        "srcA": 0,
        "srcV": 0,
        "url": [
            {
                "des": "直播平台1",
                "enable": true,
                "path": "rtmp://127.0.0.1/live/push1"
            },
            {
                "des": "直播平台2",
                "enable": true,
                "path": "rtmp://127.0.0.1/live/push2"
            },
            {
                "des": "直播平台3",
                "enable": false,
                "path": "rtmp://127.0.0.1/live/push3"
            },
            {
                "des": "直播平台4",
                "enable": false,
                "path": "rtmp://127.0.0.1/live/push4"
            }
        ]
}

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.23 多平台直播启动 /link/stream/start_platform_lives

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": "",
    "status": "success", 
    "msg": "执行完成" //注意:如果没有挂载外部存储设备,会启动录制失败
}

3.24 多平台直播停止 /link/stream/stop_platform_lives

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": "",
    "status": "success", 
    "msg": "执行完成"
}

3.25 获取多平台直播状态 /link/stream/get_platform_lives_state

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": {
        "duration": 243945,  //启动持续时间,单位ms
        "pushing": true, //多平台直播状态
        "speed": [ //每个平台地址的速度,和保存的直播平台是一一对应关系
            2406,  //速度 kb/s
            2406,
            0,
            0
        ]
    },
    "status": "success",
    "msg": "执行完成"
}

3.26 获取水印配置参数 /link/overlay/get_overlay_confs

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": [
        {
            "id": 0,  //通道id
            "name": "HDMI",  //通道名称
            "type": "vi",   //通道类型
            "enable": true,  //通道总开关,主码流是否启用
            "enable2": false,  //子码流是否启用
            "overlay": [  //水印参数,下面展示全部6种水印类型,实际中根据设置的类型和参数返回
                {
                      "type": "text", //叠加类型为文本
                      "enable": true, //显示该叠加层
                      "font": "/link/res/font.ttf", //字体文件路径
                      "content": "我是水印", //文字内容,最多支持250个字
                      "x": 0.1, //叠加层坐标[0,1],相对于整个图像
                      "y": 0.136, //同上
                      "scale": 2.2, //文字相对大小,不同的字体表现不同,[0.1,4]
                      "color": "#669900", //文字颜色,RGB
                      "bgColor": "", //文字颜色,RGBA,留空表示透明
                      "alpha": 1, //叠加层透明度
                      "move": -1, //负数向左滚动,正数向右滚动,数值越大速度越快
                      "w":0.515 //叠加层宽度,主要用于限制滚动范围。
                },
                {
                     "type": "time", //叠加类型为时间戳
                        "enable": true, //显示该叠加层
                        "font": "/link/res/font.ttf", //字体文件路径
                        "content": "yyyy年MM月dd日 hh:mm:ss", //时间格式
                        "x": 0.1, //叠加层坐标[0,1],相对于整个图像
                        "y": 0.136, //同上
                        "scale": 2.2, //文字相对大小,不同的字体表现不同,[0.1,4]
                       "color": "#669900", //文字颜色,RGB
                       "bgColor": "", //文字颜色,RGBA,留空表示透明
                       "alpha": 1 //叠加层透明度
                },
                {
                     "type": "pic", //叠加类型为图像
                        "enable": true, //显示该叠加层
                        "content": "/link/res/logo.png", //图片路径
                        "x": 0.1, //叠加层坐标[0,1],相对于整个图像
                        "y": 0.1, //同上
                        "scale": 1, //图片等比缩放倍数,[0.1,4]
                        "alpha": 1 //叠加层透明度
                         //图片也可以增加w、h属性,会导致图片强制拉伸,可能产生比例变化
                },
                {
                    "type": "mask", //叠加类型为马赛克
                       "enable": true, //显示该叠加层
                       "content": "16", //马赛克粒度,8/16/32/64
                       "x": 0.4, //叠加层坐标[0,1],相对于整个图像
                       "y": 0.4, //同上
                       "w": 0.2, //同上
                       "h": 0.2 //同上
                },
                {
                    "type": "border", //叠加类型为边框
                       "x": "0.483", //叠加层坐标[0,1],相对于整个图像
                       "y": "0.508", //同上
                       "h": "0.197", //同上
                       "w": "0.304", //同上
                       "enable": true, //显示该叠加层
                       "color": "#000000", //边框颜色,RGB
                       "alpha": 1, //叠加层透明度
                       "border": 7 //边框宽度,像素
                },
                {
                   "type": "rect", //叠加类型为矩形
                      "x": "0.097", //叠加层坐标[0,1],相对于整个图像
                      "y": "0.104", //同上
                      "h": "0.261", //同上
                      "w": "0.208", //同上
                      "enable": true, //显示该叠加层
                      "color": "#000000", //矩形颜色,RGB
                      "alpha": 1 //叠加层透明度
                }
            ]
        },
          …………
    ],
    "status": "success",
    "msg": "执行完成"
}

3.27 设置水印配置参数 /link/overlay/set_overlay_confs

请求类型: POST
参数

参数类型 描述
string 参数为JsonArray字符串,示例如下表

参数示例

[
    {
        "id":0,
        "overlay": [
                {
                    "alpha": 1,
                    "color": "#669900",
                    "content": "Overlay Text",
                    "enable": true,
                    "font": "/link/res/font.ttf",
                    "move": -1,
                    "scale": 2.2,
                    "type": "text",
                    "w": 0.515,
                    "x": 0.1,
                    "y": 0.136
                },
                   …………
            ]
    },
ChnObject,
ChnObject,
ChnObject,
…………
]

ChnObject

属性名 字段类型 是否必传 描述
id int 是 通道id
overlay array 是 水印集合,集合内为水印对象,可以为文字水印,图像水印,时间水印,马赛克水印,边框水印,矩形水印共6种,6种水印可以自由组合和重复组合,但是同一个视频通道使用的水印个数不能超过8个,不同水印可选参数如下

TextObject(文字水印)

属性名 字段类型 是否必传 描述
type string 是 水印类型,文字水印类型值为text
enable bool 是 是否显示该叠加层
font string 是 字体文件绝对路径
content string 是 文字内容,最多支持250个字
x double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
y double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
scale double 是 文字相对大小,不同的字体表现不同,[0.1,4]
color string 是 文字颜色,RGBA,留空表示透明,例如:#669900
bgColor string 是 文字背景颜色,RGBA,留空表示透明,例如:#669900
move int 是 负数向左滚动,正数向右滚动,0静止,数值越大速度越快
alpha double 是 叠加层透明度
w double 是 叠加层宽度,主要用于限制滚动范围

TimeObject(时间水印)

属性名 字段类型 是否必传 描述
type string 是 水印类型,时间水印类型值为time
enable bool 是 是否显示该叠加层
font string 是 字体文件绝对路径
content string 是 时间格式,如yyyy年MM月dd日 hh:mm:ss
x double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
y double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
scale double 是 文字相对大小,不同的字体表现不同,[0.1,4]
color string 是 文字颜色,RGBA,留空表示透明,例如:#669900
bgColor string 是 文字背景颜色,RGBA,留空表示透明,例如:#669900
alpha double 是 叠加层透明度

PicObject(图像水印)

属性名 字段类型 是否必传 描述
type string 是 水印类型,图像水印类型值为pic
enable bool 是 是否显示该叠加层
content string 是 图片绝对路径
x double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
y double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
scale double 是 文字相对大小,不同的字体表现不同,[0.1,4]
alpha double 是 叠加层透明度

MaskObject(马赛克水印)

属性名 字段类型 是否必传 描述
type string 是 水印类型,马赛克水印类型值为mask
enable bool 是 是否显示该叠加层
content string 是 马赛克颗粒,可选值8 16 32 64
x double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
y double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
w double 是 叠加层宽度[0,1],相对于整个图像,图像左上角为[0,0]
h double 是 叠加层高度[0,1],相对于整个图像,图像左上角为[0,0]

BorderObject(边框水印)

属性名 字段类型 是否必传 描述
type string 是 水印类型,边框水印类型值为border
enable bool 是 是否显示该叠加层
x double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
y double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
w double 是 叠加层宽度[0,1],相对于整个图像,图像左上角为[0,0]
h double 是 叠加层高度[0,1],相对于整个图像,图像左上角为[0,0]
color string 是 边框颜色,RGBA,留空表示透明 例如:#669900
alpha double 是 叠加层透明度
border int 是 边框宽度,像素

RectObject(矩形水印)

属性名 字段类型 是否必传 描述
type string 是 水印类型,矩形水印类型值为rect
enable bool 是 是否显示该叠加层
x double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
y double 是 叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
w double 是 叠加层宽度[0,1],相对于整个图像,图像左上角为[0,0]
h double 是 叠加层高度[0,1],相对于整个图像,图像左上角为[0,0]
color string 是 边框颜色,RGBA,留空表示透明 例如:#669900
alpha double 是 叠加层透明度

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.28 获取预设的所有布局信息 /link/layout/get_deflay_confs

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": [
        {
            "id": 0,  //布局id 
            "name": "9宫格"  //布局名称
        },
        {
            "id": 1,
            "name": "4分屏"
        },
        {
            "id": 2,
            "name": "1+2"
        },
        {
            "id": 3,
            "name": "画中画"
        },
        {
            "id": 4,
            "name": "单画面"
        },
        {
            "id": 5,
            "name": "上下"
        }
    ],
    "status": "success",
    "msg": "执行完成"
}

3.29 获取使用的视频布局、混音信息 /link/layout/get_layout_confs

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": {
        "srcV": [   //视频布局内使用的视频通道id,-1为占位符,表示该位置没有切入任何输入源
            "0",
            "-1",
            "-1",
            "-1"
        ],
        "srcA": [  //音频混音使用的视频通道id
            "0"
        ],
        "curLayId": 1,  //当前正在使用的布局id
        "curLayName": "4分屏"  //当前正在使用的布局名
    },
    "status": "success",
    "msg": "执行完成"
}

3.30 视频布局切换、音频混音 /link/layout/set_layout_confs

请求类型: GET / POST
参数

属性名 字段类型 是否必传 描述
layId int 否 使用的布局id
srcV array 否 在布局中切入的视频通道ID,”-1”为占位符
srcA array 否 音频混音使用的视频通道id

参数示例

{
    "layId": 1,  //使用的布局id
    "srcV" : ["1","2","3","-1"], // 切入的视频通道id,-1表示该位置不切入任何输入源
    "srcA" : ["1"]  //音频混音使用的视频通道id
}

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.31 获取HDMI、VGA输出配置信息 /link/output/get_output_confs

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": {
        "output": {  //HDMI 输出参数
            "enable": false,  // 是否启用HDMI输出
            "lowLatency": false,  //是否开启低延时
            "output": "1080P60",  //输出分辨率
            "rotate": 0, //旋转0 90 180  270
            "src": 6, //输出的视频通道id
            "type": "hdmi", // 类型
            "ui": true //是否输出ui(个人开发的UI程序)
        },
        "output2": { //VGA 输出参数,同HDMI
            "enable": false,
            "lowLatency": false,
            "output": "1080P60",
            "rotate": 0,
            "src": 0,
            "type": "vga",
            "ui": false
        }
    },
    "status": "success",
    "msg": "执行完成"
}

3.32 设置HDMI、VGA输出配置信息 /link/output/set_output_confs

请求类型: GET / POST
参数

属性名 字段类型 是否必传 描述
output OutObject 否 HDMI输出配置
output2 OutObject 否 VGA输出配置

OutObject

属性名 字段类型 是否必传 描述
enable bool 否 是否开启输出
lowLatency bool 否 是否开启低延时
output string 否 输出分辨率1080P60 1080I60 1080P50 1080I50 1080P30 720P60 720P50
rotate int 否 旋转
src int 否 输出使用的视频通道id
ui bool 否 是否输出ui(个人开发的UI程序)

参数示例

{
    "output": {
        "enable": true,
        "lowLatency": true,
        "output": "1080P60",
        "src": 6
    },
    "output2": {
        "enable": false,
        "lowLatency": false,
        "output": "1080P60",
        "src": 0
    }
}

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.33 获取录制参数 /link/record/get_record_confs

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": {
        "chns": [ //启动录制时,录制的视频通道id
            "0",
            "2"
        ],
        "mp4": true, //是否录制mp4
        "flv": false, //是否录制flv
        "mkv": false, //是否录制mkv
        "mov": false, //是否录制mov
        "ts": false //是否录制ts
    },
    "status": "success",
    "msg": "执行完成"
}

3.34 设置全局录制参数 /link/record/set_record_confs

请求类型: GET / POST
参数

属性名 字段类型 是否必传 描述
chns array 否 要录制的视频通道id集合
mp4 bool 否 是否录制mp4
flv bool 否 是否录制flv
mkv bool 否 是否录制mkv
mov bool 否 是否录制mov
ts bool 否 是否录制ts

参数示例

{
    "chns": [
            "0",
            "2"
        ],
        "mp4": true,
        "flv": true,
        "mkv": false
}

响应

{
    "data": "",
    "status": "success",
    "msg": "执行完成"
}

3.35 启动录制 /link/record/start_rec

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": "",
    "status": "success", 
    "msg": "执行完成" //注意:如果没有挂载外部存储设备,会启动录制失败
}

3.36 全部停止录制 /link/record/stop_rec

请求类型:GET / POST
参数

参数名 字段类型 描述
无 无 无

响应

{
    "data": "",
    "status": "success", 
    "msg": "执行完成"
}
分享到: