高级篇之可编程灵派编码器HTTP API接口说明

灵派编码器HTTP API接口说明

1. 概要及免责声明

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

2. 设计说明

2.1 LPH协议介绍

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

2.2 LPH协议交互过程说明

2.2.1 通信交互过程

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

在这里插入图片描述
(6)服务器认证通过后,会返回请求结果,如果下图
在这里插入图片描述

2.2.2 LPH协议API调用过程

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

这里通过获取视频通道信息简单说明交互流程:
(1) 发送请求首先要登录服务器 /link/user/lph_login
(2) 登录后才会发送 /link/encoder/get_channels 获取视频通道信息
(3) 获取信息后登出 /link/user/lph_logout

如下图,登录成功后,在调用获取视频通道信息接口的请求头中添加3个HASH值,此时就可以拿到正确的请求结果。
在这里插入图片描述

3. LPH协议API说明

3.1 登录请求 /link/user/lph_login

请求类型:GET / POST
参数

参数名字段类型是否必传描述
usernamestring登录用户名,同登录web用户名一致
passwdstring登录密码,同登录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
参数

参数名字段类型是否必传描述
ipstringip地址
maskstring子网掩码
gatewaystring网关
dnsstringdns
dhcpbool是否自动获取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
参数

参数名字段类型是否必传描述
sysDatestring参数格式是且仅是:“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
参数

参数名字段类型是否必传描述
serverstringNtp服务器地址,如cn.pool.ntp.org
enablebool开机时是否同步ntp时间
syncbool是否立即同步一次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对象属性见下表

属性名字段类型是否必传描述
idint通道id
namestring通道名称
pathstring网络流地址
bufferModeint缓冲模式 0: 一般 1: 实时 2:同步
minDelayint缓冲时间,单位毫秒
protocolstring传输协议,tcp\upd
framerateint帧率
decodeVbool是否视频解码
decodeAbool是否音频解码
enablebool通道总开关,是否开启流
enable2bool是否开启子码流,视频解码开启时有效

响应

{
    "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对象属性见下表

参数名称字段类型是否必传描述
idint通道id
namestring通道名称
enablebool通道总开关,主码流编码开关
enable2bool子码流编码开关
encvEncObject主码流编码参数,对象类型,属性见下表
encv2EncObject子码流编码参数,对象类型,属性见下表

EncObject

属性名字段类型是否必传描述
widthint视频宽,值为-1时,即使用输入源默认宽
heightint视频高,值为-1时,即使用输入源默认高
codecstring编码方式,可选值:h264 h265 close
profilestring编码压缩方式,可选值:base main high
rcmodestring码率控制,可选值cbr vbr avbr fixqp
bitratestring码率kb/s
frameratestring帧率
gopintgop长度
gopmodeint海思GOP模式,0–Normal 1–SmarP 2–DualP 3–BipredB
minqpInt最小量化因子
maxqpint最大量化因子
IqpintI帧量化因子
PqpintP帧量化因子
lowLatencybool是否低延时编码

响应

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

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

请求类型: POST
参数

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

参数示例

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

CapObject对象属性见下表

属性名字段类型描述
idint通道id
deinterlacebool是否全帧去隔行
rotateint视频旋转,可选值0 90 180 270
Lint视频裁决左,单位像素
Rint视频裁决右,单位像素
Tint视频裁决上,单位像素
Bint视频裁决下,单位像素

响应

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

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

请求类型:POST
参数

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

参数示例

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

AudioObject对象属性见下表

属性名字段类型描述
idint通道id
codecstring编码格式,可选值 aac pcma mp2 mp3 opus close
audioSrcstring音频来源,可选值hdmi sdi line
gainint声音增益,可选值-24 -18 -12 -6 0 6 12 18 24
samplerateint采样率,可选值 16000 32000 44100 48000 -1(-1代表自动)
channelsint声道,可选值1—单声道 2—立体声
bitrateint码率 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

属性名字段类型是否必传描述
idint通道id
streamStreamObject主码流输出参数
Stream2StreamObject子码流输出参数

StreamObject

属性名字段类型是否必传描述
hlsbool是否输出hls流
httpbool是否输出http流
rtmpbool是否输出rtmp流
rtspbool是否输出rtsp流
pushPushObject推流配置参数
udpUdpObjectudp组播配置参数
srtSrtObjectsrt流配置参数

PushObject

属性名字段类型是否必传描述
enablebool是否开启推流
formatstring封装格式,值可为auto flv rtsp rtp mpegts rtp_mpegts
hevc_idintrtmp输出时,h265数据使用的id号
pathstring推流地址

UdpObject

属性名字段类型是否必传描述
bandwidthint流控最大带宽,单位Mb
enablebool是否开启组播
flowCtrlbool流控,让码流发送更均匀,防止丢包,但是消耗一些性能
ipstring地址
portint端口
rtpbool是否增加rtp头
ttlintttl

SrtObject

属性名字段类型是否必传描述
latencyint延时
enablebool是否开启srt流
modestring模式,caller listener rendezvous
ipstring地址
portint端口
passwdstring密码
streamidint流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

属性名字段类型是否必传描述
idint通道id
hlsHlsObjecthls输出参数
ndiNdiObjectndi输出参数
tsTsObjectts输出参数

HlsObject

属性名字段类型是否必传描述
hls_base_urlstringurl前缀
hls_filenamestring文件名后缀:如-%06d.ts
hls_list_sizeintm3u8文件分片列表长度
hls_timeint分片长度,单位秒

NdiObject

属性名字段类型是否必传描述
enablebool开启/关闭
groupstringNDI分组
namestringNDI名称

TsObject

属性名字段类型是否必传描述
mpegts_original_network_idintnetwork id
mpegts_pmt_start_pidintpmt pid
mpegts_service_idintservice id
mpegts_start_pidintpid
mpegts_transport_stream_idintstream id
tsSizeintpacket 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
参数

属性名字段类型是否必传描述
autorunbool是否自动开启
srcAint音频源
srcVint视频源
urlarray地址集合,里面存放UrlObject对象

UrlObject

属性名字段类型是否必传描述
desstring平台描述
enablebool使用启用
pathstring地址

参数示例

{
        "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

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

TextObject(文字水印)

属性名字段类型是否必传描述
typestring水印类型,文字水印类型值为text
enablebool是否显示该叠加层
fontstring字体文件绝对路径
contentstring文字内容,最多支持250个字
xdouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
ydouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
scaledouble文字相对大小,不同的字体表现不同,[0.1,4]
colorstring文字颜色,RGBA,留空表示透明,例如:#669900
bgColorstring文字背景颜色,RGBA,留空表示透明,例如:#669900
moveint负数向左滚动,正数向右滚动,0静止,数值越大速度越快
alphadouble叠加层透明度
wdouble叠加层宽度,主要用于限制滚动范围

TimeObject(时间水印)

属性名字段类型是否必传描述
typestring水印类型,时间水印类型值为time
enablebool是否显示该叠加层
fontstring字体文件绝对路径
contentstring时间格式,如yyyy年MM月dd日 hh:mm:ss
xdouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
ydouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
scaledouble文字相对大小,不同的字体表现不同,[0.1,4]
colorstring文字颜色,RGBA,留空表示透明,例如:#669900
bgColorstring文字背景颜色,RGBA,留空表示透明,例如:#669900
alphadouble叠加层透明度

PicObject(图像水印)

属性名字段类型是否必传描述
typestring水印类型,图像水印类型值为pic
enablebool是否显示该叠加层
contentstring图片绝对路径
xdouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
ydouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
scaledouble文字相对大小,不同的字体表现不同,[0.1,4]
alphadouble叠加层透明度

MaskObject(马赛克水印)

属性名字段类型是否必传描述
typestring水印类型,马赛克水印类型值为mask
enablebool是否显示该叠加层
contentstring马赛克颗粒,可选值8 16 32 64
xdouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
ydouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
wdouble叠加层宽度[0,1],相对于整个图像,图像左上角为[0,0]
hdouble叠加层高度[0,1],相对于整个图像,图像左上角为[0,0]

BorderObject(边框水印)

属性名字段类型是否必传描述
typestring水印类型,边框水印类型值为border
enablebool是否显示该叠加层
xdouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
ydouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
wdouble叠加层宽度[0,1],相对于整个图像,图像左上角为[0,0]
hdouble叠加层高度[0,1],相对于整个图像,图像左上角为[0,0]
colorstring边框颜色,RGBA,留空表示透明 例如:#669900
alphadouble叠加层透明度
borderint边框宽度,像素

RectObject(矩形水印)

属性名字段类型是否必传描述
typestring水印类型,矩形水印类型值为rect
enablebool是否显示该叠加层
xdouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
ydouble叠加层坐标[0,1],相对于整个图像,图像左上角为[0,0]
wdouble叠加层宽度[0,1],相对于整个图像,图像左上角为[0,0]
hdouble叠加层高度[0,1],相对于整个图像,图像左上角为[0,0]
colorstring边框颜色,RGBA,留空表示透明 例如:#669900
alphadouble叠加层透明度

响应

{
    "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
参数

属性名字段类型是否必传描述
layIdint使用的布局id
srcVarray在布局中切入的视频通道ID,”-1”为占位符
srcAarray音频混音使用的视频通道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
参数

属性名字段类型是否必传描述
outputOutObjectHDMI输出配置
output2OutObjectVGA输出配置

OutObject

属性名字段类型是否必传描述
enablebool是否开启输出
lowLatencybool是否开启低延时
outputstring输出分辨率1080P60 1080I60 1080P50 1080I50 1080P30 720P60 720P50
rotateint旋转
srcint输出使用的视频通道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
参数

属性名字段类型是否必传描述
chnsarray要录制的视频通道id集合
mp4bool是否录制mp4
flvbool是否录制flv
mkvbool是否录制mkv
movbool是否录制mov
tsbool是否录制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": "执行完成"
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值