灵派编码器HTTP API接口说明
本文镜像:https://linkpi.cn/archives/1388
本文链接:https://blog.csdn.net/weixin_45326556/article/details/123679784
灵派编码器HTTP API接口说明
- 1. 概要及免责声明
- 2. 设计说明
- 2.1 LPH协议介绍
- 2.2 LPH协议交互过程说明
- 2.2.1 通信交互过程
- 2.2.2 LPH协议API调用过程
- 3. LPH协议API说明
- 3.1 登录请求 /link/user/lph_login
- 3.2 登出请求 /link/user/lph_logout
- 3.3 获取系统状态信息 /link/system/get_sys_state
- 3.4 获取系统网络状态 /link/system/get_net_state
- 3.5 获取HDMI/SDI通道接口状态 /link/system/get_vi_state
- 3.6 获取网络配置信息 /link/system/get_network
- 3.7 设置网络配置 /link/system/set_network
- 3.8 获取系统时间 /link/system/get_sys_date
- 3.9 设置系统时间 /link/system/set_sys_date
- 3.10 获取ntp服务信息 /link/system/get_ntpd
- 3.11 设置ntp服务 /link/system/set_ntpd
- 3.12 获取视频通道编码信息 /link/encoder/get_enc_confs
- 3.13 更新网络输入源参数 /link/encoder/set_net_chns
- 3.14 设置输入源编码参数 /link/encoder/set_enc_chns
- 3.15 设置HDMI/SDI裁剪旋转视频参数 /link/encoder/set_cap_chns
- 2.16 设置音频编码参数 /link/encoder/set_audio_chns
- 3.17 获取视频流输出配置 /link/stream/get_stream_confs
- 3.18 设置视频流输出配置 /link/stream/set_stream_confs
- 3.19 获取hls ndi ts 配置信息 /link/stream/get_hls_ndi_ts
- 3.20 设置hls ndi ts 配置信息 /link/stream/set_hls_ndi_ts
- 3.21 获取多平台直播配置信息 /link/stream/get_platform_lives
- 3.22 设置多平台直播配置信息 /link/stream/set_platform_lives
- 3.23 多平台直播启动 /link/stream/start_platform_lives
- 3.24 多平台直播停止 /link/stream/stop_platform_lives
- 3.25 获取多平台直播状态 /link/stream/get_platform_lives_state
- 3.26 获取水印配置参数 /link/overlay/get_overlay_confs
- 3.27 设置水印配置参数 /link/overlay/set_overlay_confs
- 3.28 获取预设的所有布局信息 /link/layout/get_deflay_confs
- 3.29 获取使用的视频布局、混音信息 /link/layout/get_layout_confs
- 3.30 视频布局切换、音频混音 /link/layout/set_layout_confs
- 3.31 获取HDMI、VGA输出配置信息 /link/output/get_output_confs
- 3.32 设置HDMI、VGA输出配置信息 /link/output/set_output_confs
- 3.33 获取录制参数 /link/record/get_record_confs
- 3.34 设置全局录制参数 /link/record/set_record_confs
- 3.35 启动录制 /link/record/start_rec
- 3.36 全部停止录制 /link/record/stop_rec
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交互过程主要区别如下:
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
参数
参数名 | 字段类型 | 是否必传 | 描述 |
---|---|---|---|
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/s2406,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": "执行完成"
}
灵派编码器HTTP API接口说明相关推荐
- VLC如何播放灵派直播编码器SRT流
本文镜像:https://www.linkpi.cn/archives/307 本文链接: https://blog.csdn.net/weixin_45326556/article/details/ ...
- 网红直播学习:VLC如何播放灵派直播编码器SRT流
1. 背景知识 1.1 VLC是什么 VLC 是一款自由.开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD.音频 CD.VCD 及各类流媒体协议.VLC是VideoLAN的一个项目 ...
- 灵派海思SDK的API参考手册
本手册镜像地址:https://gitee.com/LinkPi/LinkLib/wikis/pages 灵派海思SDK的API参考手册 1. 概述 基本接口详解 LinkObject Link Js ...
- 开放内网API接口的低代码开发工具和解决方案-派框架·接口大师
开放内网API接口,有什么好的免开发或低代码解决方案吗? 最近有人来问我:"我需要把一些内网的Java接口开放给外部使用,同时实现按接口流量计费,有没一种,免开发或低代码的解决方案?&quo ...
- 【建站系列教程】2.3、分享一些小说的api接口
[建站系列教程]2.3.分享一些小说的api接口 一.追书神器api 二.资源二api 三.宜搜api 四.结语 写在前面:大家好,我是热爱编程的小泽. [建站系列教程]是我的亲身建站经历写给广大建站 ...
- 前端学习(1857)vue之电商管理系统电商系统之配置api接口服务器并用postman调试接口
# 1. 电商管理后台 API 接口文档## 1.1. API V1 接口说明- 接口基准地址:`http://127.0.0.1:8888/api/private/v1/` - 服务端已开启 COR ...
- 天气预报API接口 : 城市对应码(中国天气网)
文章目录 天气预报接口api(中国天气网) 中国天气网城市代码: 相关阅读 · 资源: 天气预报接口api(中国天气网) 中国天气 weather.com http://m.weather.com.c ...
- API接口设计之RESTful软件架构风格
说到API接口设计有的喜欢用Web Service,有的喜欢用WCF,当然也有还在用最原始的ashx,aspx页面的.无论采用什么方式能很好的满足业务需求就ok,但是不同的方式在扩展性.易用性,可维护 ...
- 快速免费对接快递鸟圆通快递单号查询api接口
快递查询API接口是使用的物流单号即可实现查询物流信息.主要应用在电商商城.ERP系统商.WMS系统商.快递柜.银行等企业.多家快递物流公司接口统一接入,建议对接接口提供商,一次性可以接入多家快递,在 ...
- 免费常用快递查询API接口及快递在线下单API分享
1.常用快递API 快递鸟支持顺丰.EMS.申通.圆通.韵达.汇通.中通.天天.德邦.全峰等国内外418家主流快递物流公司接口. 适用于电商网站.企业内部系统或者在线管理系统这种一般都是拥有一定需求量 ...
最新文章
- 边做边思考,谷歌大脑提出并发RL算法,机械臂抓取速度提高一倍!
- linux更改默认版本,linux - 将某个软件版本设为ubuntu中的默认版本 - Ubuntu问答
- java gui拖拽_Java Swing拖放
- Vue(小案例_vue+axios仿手机app)_实现用户评论
- strcpy和memcpy的区别 | strcpy和strncpy的区别
- 【高德地图开发3】---地图显示
- linux查看终端进程,Linux查看进程
- CSS 基础知识(二)
- Winform中实现新增和更新共用一个页面的示例流程
- [云炬创业学笔记]第三章商业创意的发掘与评估测试2
- Kali忘记登录密码——修改root密码
- LockSupport的park和unpark
- java静态变量实例变量_java中静态变量和实例变量的区别
- VisualSVNServer的使用
- oracle Instance status: READY–lsnrctl status|start|stop
- webstrom 开发工具简介
- 数据库 Oracle数据库对象二
- oracle中制作副本,创建表的副本并在创建时为其提供约束
- RealView MDK在链接时提示空间不够的解决方案总结
- 奇怪的315:大家都知道,为什么要等晚会曝光,管理部门呢
热门文章
- 疯狂java 李刚 pdf_Java开发教程 – 《疯狂Java讲义第4版》PDF及代码+李刚
- 开放源代码机器人控制软件
- ubuntu 安装 teamViewer 出现错误
- 历史 微信开发者工具_微信开发者工具-微信开发者工具下载 v1.03.2011120官方版--pc6下载站...
- 谭浩强c语言程序设计笔记讲义,【笔记】谭浩强C语言程序设计--简明笔记
- [Unity插件]Live2D插件学习
- yacc c语言语法分析器,GitHub - waxnkw/yacc: 简陋版语法分析器
- 详解离线安装Python库
- python下载第三方库失败的解决办法
- 供SAPI中TTS功能用使的Win10语言包安装