Descripción de la interfaz API HTTP del codificador Lingpai

Espejo de este artículo: https://linkpi.cn/archives/1388
Enlace a este artículo: https://blog.csdn.net/weixin_45326556/article/details/123679784

Descripción de la interfaz API HTTP del codificador Lingpai

1. Resumen y exención de responsabilidad

    El fondo de Lingpai Encoder está implementado en PHP. Si es necesario personalizarlo, puede modificar su código fuente usted mismo. Para obtener el fondo del código fuente de Lingpai Encoder, consulte https://gitee.com/LinkPi/Encoder /árbol/web . Algunos usuarios necesitan controlar el codificador en su propio servidor o software escrito por ellos mismos, lo que se puede hacer llamando a la interfaz API HTTP del codificador Lingpai. Para facilitar la discusión, definimos la interfaz API HTTP del codificador Lingpai como la interfaz LPH .
    Debido a actualizaciones de la versión del producto u otras razones, el contenido de este documento continuará actualizándose. A menos que se acuerde lo contrario, este documento solo se usa como guía, y todas las declaraciones y sugerencias en este documento no constituyen ninguna garantía expresa o implícita.

2. Descripción del diseño

2.1 Introducción al protocolo LPH

El protocolo LPH es una interfaz API definida sobre HTTP, y su esencia aún pertenece al protocolo HTTP. Sobre la base de HTTP, el protocolo LPH agrega el proceso interactivo de autenticación Digest y autenticación de inicio de sesión.

2.2 Descripción del proceso de interacción del protocolo LPH

2.2.1 Proceso de interacción de la comunicación

Las principales diferencias entre el proceso de interacción HTTP con autenticación Digest y el proceso de interacción HTTP estándar del comando LPH son las siguientes:
archivo
El protocolo LPH actualmente solo admite el proceso de autenticación Digest, y el nombre de usuario y la contraseña de autenticación predeterminados son admin.
A continuación, usamos cartero como cliente para ilustrar un proceso de comunicación Aquí tomamos inicio de sesión (/enlace/usuario/lph_login) como ejemplo.
(1) Primero, iniciamos el cartero, abrimos la herramienta de la consola del cartero como se muestra a continuación y borramos la información de la consola
archivo
(2) Creamos una solicitud, la URL es /link/usr/lph_login, el método de solicitud es GET/POST, y la entrega se establece Parámetros, aquí tome la solicitud GET como ejemplo, como se muestra en la figura a continuación
archivo
(3) Configure el método de autenticación Http del cartero y configure el nombre de usuario y la contraseña, como se muestra en la figura a continuación
archivo
(4) Haga clic en el Botón Enviar para enviar la solicitud, y luego abra la herramienta de la consola del cartero, puede ver 2 registros de Solicitud, como se muestra en la siguiente figura (5
archivo
) En comparación, podemos ver que la primera vez que el cliente envía una solicitud al servidor, el servidor devuelve 401 y lleva la
información de autenticación WWW-Authenticate en el encabezado de respuesta, y el cliente del cartero obtiene la información de autenticación. Después de eso, la autenticación se calcula y se agrega al encabezado de la solicitud y se envía nuevamente.
archivo
(6) Después de pasar la autenticación del servidor, se devolverá el resultado de la solicitud, como se muestra en la figura a continuación.
archivo

2.2.2 Proceso de llamada a la API del protocolo LPH

A través del ejemplo en 2.2.1, sabemos que la información del encabezado de Autorización se requiere durante el proceso de comunicación, pero los encabezados de solicitud que no sean la solicitud de inicio de sesión deben llevar no solo la información de Autorización, sino también los 3 conjuntos de valores HASH. obtenido por el inicio de sesión para que la solicitud sea exitosa.

Aquí hay una breve descripción del proceso de interacción al obtener información del canal de video:
(1) Para enviar una solicitud, primero debe iniciar sesión en el servidor /enlace/usuario/lph_login
(2) Después de iniciar sesión, enviará /enlace/ codificador/get_channels para obtener información del canal de video
(3) Después de obtener la información cerrar sesión /link/user/lph_logout

Como se muestra en la figura a continuación, después de que el inicio de sesión sea exitoso, agregue 3 valores HASH al encabezado de solicitud de la API para obtener información del canal de video, y luego podrá obtener el resultado correcto de la solicitud.
archivo

3. Descripción de la API del protocolo LPH

3.1 Solicitud de inicio de sesión /enlace/usuario/lph_login


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo es obligatorio describir
nombre de usuario cadena Nombre de usuario de inicio de sesión, igual que el nombre de usuario web de inicio de sesión
Contraseña cadena La contraseña de inicio de sesión, que es la misma que la contraseña de inicio de sesión para la web, debe cifrarse con md5 antes de la transmisión

respuesta

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

3.2 Solicitud de cierre de sesión /enlace/usuario/lph_logout


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo describir
ninguno ninguno ninguno

respuesta

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

3.3 Obtener información del estado del sistema/enlace/sistema/get_sys_state


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo describir
ninguno ninguno ninguno

respuesta

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

3.4 Obtenga el estado de la red del sistema/enlace/sistema/get_net_state


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo describir
ninguno ninguno ninguno

respuesta

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

3.5 Obtener estado/enlace/sistema/get_vi_state de interfaz de canal HDMI/SDI


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo describir
ninguno ninguno ninguno

respuesta

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

3.6 Obtener información de configuración de red/enlace/sistema/get_network


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo describir
ninguno ninguno ninguno

respuesta

{
    
    
    "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 Establecer configuración de red /link/system/set_network


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo es obligatorio describir
ip cadena No dirección IP
mascarilla cadena No máscara de subred
puerta cadena No puerta
DNS cadena No DNS
dhcp bool No Ya sea para obtener automáticamente ip, cuando el valor es verdadero, se ignorarán otros parámetros

Respuesta
Sin valor de retorno

3.8 Obtener la hora del sistema/enlace/sistema/get_sys_date


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo es obligatorio describir
ninguno ninguno ninguno ninguno

respuesta

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

3.9 Establecer la hora del sistema/enlace/sistema/set_sys_date


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo es obligatorio describir
fecha del sistema cadena El formato del parámetro es y solo: "yyyy/MM/dd/hh/mm/ss"

respuesta

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

3.10 Obtener información/enlace/sistema/get_ntpd del servicio ntp


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo es obligatorio describir
ninguno ninguno ninguno ninguno

respuesta

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

3.11 Establecer servicio ntp /link/system/set_ntpd


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo es obligatorio describir
servidor cadena No Dirección del servidor NTP, como cn.pool.ntp.org
permitir bool No Si sincronizar la hora ntp al arrancar
sincronizar bool No Si sincronizar la hora ntp inmediatamente

respuesta

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

3.12 Obtener información de codificación del canal de video/enlace/codificador/get_enc_confs


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo es obligatorio describir
ninguno ninguno ninguno ninguno

respuesta

{
    
    
    "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 Actualizar parámetros de fuente de entrada de red /link/encoder/set_net_chns

Tipo de solicitud:
parámetro POST

Tipo de parámetro describir
cadena El parámetro es una cadena JsonArray, los ejemplos se muestran en la siguiente tabla

ejemplo de parámetro

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

Consulte la siguiente tabla para conocer las propiedades de los objetos de NetObject.

Nombre del Atributo Tipo de campo es obligatorio describir
identificación En t Canal ID
nombre cadena No Nombre del Canal
camino cadena No dirección de flujo de red
modo de búfer En t No Modo de búfer 0: normal 1: tiempo real 2: síncrono
minDelay En t No Tiempo de búfer, en milisegundos
protocolo cadena No Protocolo de transporte, tcp\upd
cuadros por segundo En t No cuadros por segundo
decodificarV bool No Ya sea decodificación de video
decodificar bool No Si la decodificación de audio
permitir bool No El interruptor principal del canal, ya sea para abrir la corriente.
habilitar2 bool No Ya sea para habilitar la transmisión secundaria, válido cuando la decodificación de video está habilitada

respuesta

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

3.14 Establecer parámetros de codificación de fuente de entrada/enlace/codificador/set_enc_chns

Tipo de solicitud:
parámetro POST

Tipo de parámetro describir
cadena El parámetro es una cadena JsonArray, los ejemplos se muestran en la siguiente tabla

ejemplo de parámetro

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

Propiedades del objeto ChnObject ver la tabla a continuación

nombre del parámetro Tipo de campo es obligatorio describir
identificación En t Canal ID
nombre cadena No Nombre del Canal
permitir bool No Interruptor principal de canal, interruptor de codificación de flujo principal
habilitar2 bool No Interruptor de codificación de transmisión secundaria
encv EncObjeto No Los parámetros de codificación de la transmisión principal, el tipo de objeto y los atributos se muestran en la siguiente tabla
env2 EncObjeto No Los parámetros de codificación de transmisión secundaria, el tipo de objeto y los atributos se muestran en la siguiente tabla

EncObjeto

Nombre del Atributo Tipo de campo es obligatorio describir
ancho En t No Ancho de video, cuando el valor es -1, se usa el ancho predeterminado de la fuente de entrada
altura En t No Altura del video, cuando el valor es -1, es decir, se usa la altura predeterminada de la fuente de entrada
códec cadena No Método de codificación, valor opcional: h264 h265 cerrar
perfil cadena No Método de compresión de codificación, valor opcional: base principal alta
Modo rc cadena No Control de tasa, valor opcional cbr vbr avbr fixqp
tasa de bits cadena No Tasa de código kb/s
cuadros por segundo cadena No cuadros por segundo
gop En t No longitud de gota
modo gop En t No Modo Hisilicon GOP, 0–Normal 1–SmarP 2–DualP 3–BipredB
minqp En t No 最小量化因子
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 de canal de video utilizado para la mezcla de audio

ejemplo de parámetro

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

respuesta

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

3.31 Obtener información de configuración de salida HDMI, VGA/enlace/salida/get_output_confs


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo describir
ninguno ninguno ninguno

respuesta

{
    
    
    "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 Establecer información de configuración de salida HDMI, VGA/enlace/salida/set_output_confs


Tipo de solicitud: parámetros GET / POST

Nombre del Atributo Tipo de campo es obligatorio describir
producción OutObject No Configuración de salida HDMI
salida2 OutObject No Configuración de salida VGA

OutObject

Nombre del Atributo Tipo de campo es obligatorio describir
permitir bool No Ya sea para habilitar la salida
baja latencia bool No Ya sea para habilitar la latencia baja
producción cadena No Resolución de salida 1080P60 1080I60 1080P50 1080I50 1080P30 720P60 720P50
girar En t No rotar
origen En t No El ID del canal de video utilizado para la salida.
interfaz de usuario bool No Ya sea para generar ui (programa de interfaz de usuario desarrollado personalmente)

ejemplo de parámetro

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

respuesta

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

3.33 Obtener parámetros de grabación/enlace/registro/get_record_confs


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo describir
ninguno ninguno ninguno

respuesta

{
    
    
    "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 Establecer parámetros de grabación globales/enlace/record/set_record_confs


Tipo de solicitud: parámetros GET / POST

Nombre del Atributo Tipo de campo es obligatorio describir
canales formación No Una colección de ID de canales de video para grabar
mp4 bool No Ya sea para grabar mp4
flv bool No Ya sea para grabar flv
mkv bool No Ya sea para grabar mkv
mover bool No Ya sea para grabar mov
t bool No si grabar ts

ejemplo de parámetro

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

respuesta

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

3.35 Iniciar grabación /enlace/grabar/start_rec


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo describir
ninguno ninguno ninguno

respuesta

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

3.36 Dejar de grabar todo/enlace/grabar/stop_rec


Tipo de solicitud: parámetros GET/POST

nombre del parámetro Tipo de campo describir
ninguno ninguno ninguno

respuesta

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

Supongo que te gusta

Origin blog.csdn.net/weixin_45326556/article/details/123679784
Recomendado
Clasificación