打开流媒体通道
POST /strm/open
本接口用于打开特定终端通道的流媒体会话,并返回服务端分配的媒体地址。实时音视频、远程录像回放的流媒体会话均由本接口进行打开。如果接口调用时媒体已经可以播放
(实时音视频时,如果此前已有其它会话打开了通道并已经在播放),返回的 OpenStrmResult
的ready
属性将被设为true
;否则,ready
属性为false
,
后续,当媒体可播放时,企业应用的 POST strm_notif
SPI接口将被媒体服务调用,通知的act
为ready
。
本接口成功返回后,流请求的最后流请求保持时间被置为媒体服务的当前时间,客户端此时应启动流请求保持定时器,在流请求保持间隔时间内调用 POST /strm/keep
流请求保持接口。
假设媒体服务配置的流请求保持间隔为25秒,客户端流请求保持间隔为20秒,则客户端应在本接口成功返回后20秒调用第一次流请求保持调用。
请求
POST https://n11.gratour.info:7011/strm/open
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4
{
"cb": "https://strm:PaEWWGCeE3Az9Z7o@n11.gratour.info:9100/v1/strm_serv",
"user": {
"token": "nYOnhfpYJ9tk8Lvt",
},
"typ": "live",
"simNo": "13320200317",
"channelId": 1,
"connIdx": 0,
"fmt": 1
}
请求实体属性
属性 | 数据类型 | 必要 | 说明 |
---|---|---|---|
reqId | string | 请求ID。此请求ID可由调用者产生、提供。如果提供,则调用者应确保其符合 请求ID(reqId)的格式要求 。如果不提供,则由流媒体服务产生并返回。 | |
cb | string | 企业系统的回调接口的基地址。流媒体服务使用该地址来调用企业系统的接口(如通知媒体可用)。 如:cb 为https://gratour.info:9100/v1/strm_serv 则,流媒体服务在回调流媒体通知 ( POST /strm_notif )时,使用的接口地址为:https://gratour.info:9100/v1/strm_serv/strm_noitf 此地址应使用 https 协议,并可在此地址带上鉴权信息。如: https://strm:PaEWWGCeE3Az9Z7o@gratour.info:9100/v1/strm_serv 鉴权信息在回调时以Basic Authorization方式在 Authorization Header中提供。 使用鉴权信息时,应产生短生命周期的随机密码,每隔一小段时间更换。但请求仍有效时,密码应保持有效。 如果不提供鉴权信息,则应确保回调接口只能供媒体服务调用。 多个打开请求可使用不同的用户名密码。媒体服务不会在请求的生存期之外缓存这些鉴权信息。如果不提供,集成应用也可通过消息队列等获得请求状态变更通知 | |
user | StrmUserInfo | Y | 用户信息对象。 |
typ | string | Y | 流的类型:
|
simNo | string | Y | 终端识别号。 |
chanId | int | Y | 音视频逻辑通道号。参见JT/T 1078标准定义的车载视频逻辑通道号定义表。 |
dataTyp | int | 交互模式。
0 | |
codeStrm | int | 码流类型:
0 。 | |
fmt | int | 请求的客户端媒体流格式:
0 。 | |
subFmt | string | 子协议类型:
| |
scheme | string | 要求的媒体播放端口。为下列值之一:
fmt 为0 时,默认为wss ;fmt 为1 时,默认为https 。 | |
connIdx | int | 连接序号。用于后台分配不同的服务器给客户端。未指定时值视为:0 。 | |
talkSendProtoVer | int | 对讲时服务端向客户端的语音向终端发送码流时所采用的协议版本:
typ 为live 且dataTyp 为2 时有效。 | |
exclusive | boolean | 是否以独占方式打开媒体流。为true 时,成功打开媒体后,其它流请求将均返回-25 。未指定时,值视为false 。 | |
record | boolean | 是否在播放的同时在服务端进行存储。目前仅当fmt 为0 时才能指定此属性为true 。未指定时,值视为false 。 | |
detectMediaTyp | boolean | 部分终端存在无音频的情况,即使下发请求音视频请求,终端实际推送的也只有视频而无音频,此时可使用媒体服务的码流媒体类型检测功能,由媒体服务根据码流确定实际媒体类型(结果由OpenStrmResult 的mediaTyp 属性返回)。本属性用于指示是否强制服务端对终端实际码流进行媒体类型(mediaTyp )检测。如指定了true 值,则服务端将进行媒体类型检测,并将检测到的媒体类型返回到OpenStrmResult结构的mediaTyp 属性。如指定了false 值,则直接根据dataTyp 的值进行判断,而不进行媒体类型检测。不指定时,值视为false 。 | |
keepIntv | int | 约定的保持调用( POST /strm/keep )间隔,单位:秒。客户端如果需要指定比服务配置的更长的保持调用间隔时,可指定本属性。指定时,此属性值不能小于15秒,不能大于600秒。不指定时,使用服务配置的默认值。 | |
audioCfg | AudioConfig | 输出到客户端的音频的配置。不指定时,由服务端决定输出的音频配置。 | |
rtspSrc | RtspSource | 采用RTSP源进行播放。打开JT/T 1078协议终端时,不需要指定本属性。 | |
http | boolean | 是否要求HTTP/WS媒体播放端口,而不是HTTPS/WSS媒体播放端口。为true ,媒体服务返回 HTTPS 或 WSS协议 | |
timedToken | string | 政府平台播放的时效口令。当请求为政府平台播放请求时,必须提供此属性;当政府平台打开媒体时,服务会比对此时效口令以验证身份。为了在时效口令更新的时段,政府平台能够平滑地用或新或旧的口令访问媒体,本属性支持传送最多两个时效口令(新口令和旧口令)。当传递两个时效口令时,以, 分隔。如果政府平台请求播放时并不是处于时效口令更新的时段,则只应传递一个口令。 |
StrmUserInfo
属性 | 数据类型 | 必要 | 说明 |
---|---|---|---|
userId | string | 用户ID,用于日志和调试用途 | |
userGrade | int | 用户级别(暂未使用) | |
token | string | Y | 用户的会话令牌。此令牌字符串由企业应用产生。当使用websocket接收码流时,返回的websocket播放地址会包含此令牌,以便websocket端验证令牌 |
AudioConfig
属性 | 数据类型 | 必要 | 说明 |
---|---|---|---|
sampleRate | int | Y | 采样率。为下列值之一:
|
channels | int | Y | 声道数。为下列值之一:
|
RtspSource
属性 | 数据类型 | 必要 | 说明 |
---|---|---|---|
url | string | Y | 所要抓取的RTSP流源地址。如:rtsp://n11.gratour.info/test/strm1,此地址必须要能被媒体服务所能访问到。当媒体源要求鉴权时,可以在url中带用户名和密码(不推荐),如: rtsp://user:passwd@n11.gratour.info/test/strm1 ,此时,本结构的 user 和pwd 属性被忽略 |
user | string | 当媒体源要求鉴权时,本属性指定用户名。当url 属性中包含用户名时,本属性被忽略 | |
pwd | string | 当媒体源要求鉴权时,本属性指定用户密码。当url 属性中包含用户密码时,本属性被忽略 |
应答
{
"data": [
{
"reqId": "AbctuB9sSJe8bbBzv-yr9g",
"ctrl": true,
"ready": false,
"playUrl": "https://t2.gratour.info:20022/s/13320200317_1_1?a\u003dS7rAwnY0\u0026b\u003dS91-lPEJg_yulbO6okcRQrguBqEFlUH-YmSXQewOJYSpWg8_7Jx2xZdBYiNZhWZETYFmZ3Kd8j_qguPRf10Yfvl_WB8H5tFUHkh6nILIiZU6wKN3buuvaXAKNA93QmIsk77baWYzkuY70l9TQswdvRRNOBXz9fszrWeQ5aeca6B9PXXUw_WVZiQBiUfrgF7CS2N\u0026reqId\u003dM2MyM2FmMTA3NDQyNGE1YzhlY2VkMzc3ZWU3ZDEwYTQ",
"mediaTyp": "av"
}
],
"errCode": 0,
"message": "OK."
}
应答实体属性
属性 | 数据类型 | 必要 | 说明 |
---|---|---|---|
errCode | int | Y | 错误码。
|
message | string | Y | 错误信息 |
data | array[OpenStrmResult] | 返回的结果对象数组。元素为OpenStrmResult类型,见下 | |
count | int | 返回的记录数 |
OpenStrmResult
属性 | 数据类型 | 必要 | 说明 |
---|---|---|---|
reqId | string | Y | 由平台分配或调用者传入的请求ID,用于监测流通知,或播放控制 |
ctrl | boolean | Y | 当前请求是否获得音视频的控制权(是否此通道上唯一的流请求)。只当ctrl 为true 时,企业应用才可向终端下发推流指令。 |
playUrl | string | Y | 播放地址 |
ready | boolean | Y | 流是否已经可以播放。为false 时,要等到收到act为ready 的流媒体通知才能播放。 |
taUrl | string | WebSocket地址,用于对讲时客户端提交音频数据。此地址使用二进制websocket协议。仅当请求的流类型为实时流,且数据类型(dataTyp )为2: 对讲 时有效。 | |
wsUrl | string | WebSocket地址,用于对讲时客户端提交音频数据。此地址使用stomp协议。仅当请求的流类型为实时流,且数据类型(dataTyp )为2: 对讲 时有效。 | |
mediaTyp | string | Y | 流的媒体类型:
|
keepIntv | int | Y | 要求的保持调用(POST /strm/keep )的时间间隔,单位:秒 |
host | string | Y | 终端码流推流地址的主机名。企业应用在向终端下发推流指令时应传此主机名。 |
port | int | Y | 采用JT/T 808-2013协议的终端的码流推流地址的端口号。如果终端采用JT/T 808-2013协议,企业应用在向终端下发推流指令时应传此端口号。 |
tcp | boolean | Y | 指出port 属性所指代的端口号是否TCP端口。false 时表示UDP端口。 |
port2019 | int | Y | 采用JT/T 808-2019协议的终端的码流推流地址的端口号。如果终端采用JT/T 808-2019协议,企业应用在向终端下发推流指令时应传此端口号。 |
tcp2019 | boolean | Y | 指出port2019 属性所指代的端口号是否TCP端口。false 时表示UDP端口。 |
recording | boolean | 服务端是否在播放的同时将媒体转储成录像文件。 为false 时,无此属性。 | |
audioCfg | AudioConfig | 输出到客户端的音频的配置。未指定时,无此属性。 | |
detectMediaTyp | boolean | 是否已使用媒体服务的码流媒体类型检测功能。为false 时,无此属性。 |
部分厂商使用对讲功能注意事项
- channel(通道号)参数
- 博实结使用的通道号为
36
- 博实结使用的通道号为
- talkSendProtoVer参数
- 使用博实结终端进行对讲时,需要设置
talkSendProtoVer
参数,指定值为1
- 使用博实结终端进行对讲时,需要设置