灵派编码器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/usr/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": "执行完成"
}
分享到: