Skip to content

转码微服务协议文档

1 API列表

  1. smtStartPlayerProcess

  2. smtStartTranscoderProcess

  3. smtStopPlayerProcess

  4. smtStopTranscoderProcess

  5. smtSetServerConfig

  6. smtGetMediaList

  7. smtGetMediaInfo

  8. smtGetServerConfig

  9. smtPlayerPause

    10.smtGetDuration

    11.smtGetPlayerPosition

    12.smtPlayerSeek

    13.smtPlayerFastSeek

    14.smtLanguageSwitch

    15.smtOsdSwitch

    16.smtStartLive

    17.smtStopLive

    18.smtDefoggingSwitch

    19.smtStabilizingSwitch

    20.smtScrewSlantCorrectionSwitch

    21.smtGetGpuInfo

    22.smtStartMetaDataForward

    23.smtTranscoderPosition

4 hook api详解

1.on_add_task_result

2.on_add_task

3.player_task_stoped

4.on_remove_task

5.player_push_result

6.transcoder_position

7.transcoder_error_handler

8.metadata_forwar

2 返回约定

返回值统一为json字符串

样式如下:

json
{
"code":int,
"msg":string,
"id":string
}

其中,id为处理的视频流任务唯一ID,该ID会在调用API"SmastartProcess"时返回。Code的含义如下:

cpp
{
    NotFound = -500,//未找到
        Exception = -400,//代码抛异常
        InvalidArgs = -300,//参数不合法
        SqlFailed = -200,//sql执行失败
        AuthFailed = -100,//鉴权失败
        OtherFailed = -1,//业务代码执行失败,
        Success = 0//执行成功
        }

msg为结果信息,API使用者只需要显示msg即可。

微服务调用时序图

3 API详解

前言

协议文档里的api接口都是rpc接口,以下所有api接口对外均提供http、mqtt接口,规则如下:

http调用:

url为:http://ip:port/index/api/smt/接口名;POST方式

只有paramsStr,则放到body中以json传输;

还有其它文件如ar_camera等,则paramsStr和其它文件都以form-data传输,json形式的参数列表key为param_json

mqtt调用:

topic为:/index/api/smt/接口名。

参数paramsStr,则放到body中以json传输;

1. smtStartPlayerProcess

描述:开始本地文件播放任务

参数:

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string,//鉴权码
  "pull_url":string, //需要播放的视频文件地址
  "is_video_forward":string, //是否直接转发
  "forward_push_url": string, //直接转发的推流地址
  "is_video_live": string, //是否直播-有OSD的推流
  "live_push_url": string, //直播的推流地址
}

注(本文中所有接口以此为例):

http调用:

http://127.0.0.1:8080/index/api/smt/smtStartPlayerProcess;paramsStr放在body中以json传输。

mqtt调用:

topic为:/index/api/smt/smtStartPlayerProcess。

2. smtStartTranscoderProcess

描述:开始转码任务

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string,//鉴权码
  "pull_url":string, //需要转码的视频文件地址
  "out_url": string //转码文件输出地址
}

3. smtStopPlayerProcess

描述:停止并删除本地文件播放任务

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string,//鉴权码
  "id": string //视频文件播放任务的GUID,由本服务返回给上级服务的
}

4. smtStopTranscoderProcess

描述:停止并删除转码任务

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string,//鉴权码
  "id": string //转码任务的GUID,由本服务返回给上级服务的
}

5. smtSetServerConfig

描述:修改配置文件

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "http.port": string,
  "http.sslport":string,
  "http.apiDebug":string,
  "rpc.port":string,

  //wep hook api相关配置
  "hook.enable": bool,  //是否启用hook api
  "hook.on_add_task": string,  //创建任务的hook wep url
  "hook.on_add_task_result": string,  //创建任务结果的hook wep url
  "hook.on_remove_task": string,  //删除任务的hook wep url
  "hook.player_task_stoped": string,  //任务结束的hook wep url
  "hook.player_push_result": string,  //任务推流结果的hook wep url
  "hook.transcoder_position": string,  //转码进度的hook wep url
  "hook.transcoder_error_handler": string,  //转码错误的hook wep url
}

6. smtGetMediaList

描述:获取所有正在处理的媒体任务列表,播放或转码

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "player_or_transcoder": string //播放或转码
}

返回的媒体列表信息

cpp
{
  "code"int //错误码
  "data": {//本地文件播放
[
  {
     "pull_url":string, //拉流地址
      "is_forward":string, //是否直接转发
      "forward_push_url": string, //直接转发地址
      "is_video_live": string, //是否直播-有OSD的推流
      "live_push_url": string, //直播的推流地址
      "id":string //任务ID
},
......
]
}
}
cpp
{
  "code"int //错误码
  "data": {//转码
[
  {
      "pull_url": string, //拉流地址
      "out_url": string, //转码输出地址
      "id": string //任务id
},
......
]
}
}

7. smtGetMediaInfo

描述:获取指定任务的媒体信息,播放或转码

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id": string, //指定的任务id
  "player_or_transcoder": string //播放或转码  0表示player任务,1表示transcoder任务
}

返回的媒体列表信息

cpp
{
  "code"int //错误码
  "data": {//本地文件播放
      "pull_url":string, //拉流地址
      "is_forward":string, //是否直接转发
      "forward_push_url": string, //直接转发地址
      "is_video_live": string, //是否直播-有OSD的推流
      "live_push_url": string, //直播的推流地址
}
cpp
{
  "code"int //错误码
  "data": {//转码
      "pull_url": string, //拉流地址
      "out_url": string, //转码输出地址
}
}

8. smtGetServerConfig

描述:获取配置文件

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
}

返回的配置表信息

cpp
{
  "secret":string, //鉴权码
  "http.port": string,
  "http.sslport": string,
  "http.apiDebug": string,
  "rpc.port": string,

  //wep hook api相关配置
  "hook.enable": bool,  //是否启用hook api
  "hook.on_add_task": string,  //创建任务的hook wep url
  "hook.on_add_task_result": string,  //创建任务结果的hook wep url
  "hook.on_remove_task": string,  //删除任务的hook wep url
  "hook.player_task_stoped": string,  //任务结束的hook wep url
  "hook.player_push_result": string,  //任务推流结果的hook wep url
  "hook.transcoder_position": string,  //转码进度的hook wep url
  "hook.transcoder_error_handler": string,  //转码错误的hook wep url
}

**9.****smtPlayerPause**

描述:视频文件播放时,暂停

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id":string, //视频文件播放任务的GUID
}

**10.****smtGetDuration**

描述:获取视频文件总时长,单位为秒

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "path":string, //视频文件地址
}

返回的信息

cpp
{
  "code":string, //鉴权码
  "msg": string,
  "id": string,
  "data": {
      "duration":int64//视频文件总时长,单位为秒
  }
}

11.smtGetPlayerPosition

描述:获取当前本地视频文件播放时间点,单位为秒

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id":string //视频文件播放任务的GUID
}

返回的信息

cpp
{
  "code":string, //鉴权码
  "msg": string,
  "id": string,
  "data": {
      "position":int64//当前播放时间点,单位为秒
  }
}

12.smtPlayerSeek

描述: 视频文件播放时,跳转到某一个百分比

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id":string, //视频文件播放任务的GUID
  "percent"double// 百分比参数(0-1)
}

13.smtPlayerFastSeek

描述:视频文件播放时,快进或者后退十秒

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id": string, //视频文件播放任务的GUID
   "farward": string // 1-前进10秒,0-后退10秒
}

14.smtLanguageSwitch

描述:OSD语言切换

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id": string, //视频文件播放任务的GUID
   "player_or_transcoder": int, // 0表示player,1表示transcoder
   "language": int //0-中文, 1-英文,2-俄文,3-韩文
}

15.smtOsdSwitch

描述:OSD开关

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id": string, //视频文件播放任务的GUID
   "player_or_transcoder": int, // 0表示player任务,1表示transcoder任务
   "osd_flags": int //0-FollowSEI, 1-FullOn,2-HalfOn,3-FullOff
}

16.smtStartLive

描述:直播本地播放文件

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id": string, //视频文件播放任务的GUID
   "dst_url": string, //直播的目标地址
   "bitrate": int64 //直播的码率,单位bps,如果为负数,则使用输入视频的码率
}

17.smtStopLive

描述:停止直播本地播放文件

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id": string //视频文件播放任务的GUID
}

18.smtDefoggingSwitch

描述:本地播放文件时,去雾(需要GPU设备支持)

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id": string, //视频文件播放任务的GUID
   "state": bool //true-打开,false-关闭
}

19.smtStabilizingSwitch

描述:本地播放文件时,稳像(需要GPU设备支持)

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
   "id": string, //视频文件播放任务的GUID
   "state": bool //true-打开,false-关闭
}

20.smtScrewSlantCorrectionSwitch

描述:旋偏纠正开关

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
   "id": string, //视频文件播放任务的GUID
   "player_or_transcoder": int, // 0表示player任务,1表示transcoder任务
   "screw_slant_correction_type": int //0-FollowSEI, 1-On,2-Off
}

21.smtGetGpuInfo

描述:获取本机GPU信息

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string //鉴权码
}

返回的信息

cpp
{
  "code":string, //鉴权码
  "msg": string,
  "id": string,
  "gpu_list":[{
       "gpu_id":int //
       "gpu_name“: string //gpu名字
    }]
}

22.smtStartMetaDataForward

描述:开始发送元数据(udp方式),要转发或者直播开启成功后在调用这个接口

参数

参数名参数类型备注
paramsStrstd::stringjson形式的参数列表

paramsStr示例如下:

cpp
{
  "secret":string, //鉴权码
  "id": string, //视频文件播放任务的GUID
   "assembly_type": int, //封装方式0-raw, 1-json,2-xml
  "ip": string, //目的Ip地址
  "port": int //目的端口
}

23.smtTranscoderPosition

描述:转码进度,http长连接

参数:无

返回数据:

json
{
   "code":string, //状态码
  "id": string, //任务id
  "msg": string, //原因描述
  "position":int64, //进度位置
  "duration": string 总时长
}

4 hook api详解

根据微服务配置里的hoop api地址,如果打开了hook.enable且api有地址,触发相应事件的时候会调用相关hook api接口

on_add_task_result

述:创建任务结果hook api接口

参数

json
{
  "id": string, //任务id
  "code":string, //状态码
  "duration": string, //时长,本地视频才有,暂时没用
  "msg": string //信息描述
}

on_add_task

述:开始创建任务hook api接口

参数

json
创建任务的http 接口参数

player_task_stoped

述:视频任务结束的hook api接口

参数

json
{
   "code":string, //状态码
  "id": string, //任务id
  "msg":string, //原因描述
}

on_remove_task

述:主动调用删除任务的结果hook api接口

参数

json
{
   "code":string, //状态码
  "id": string, //任务id
  "msg": string, //原因描述

}

player_push_result

述:推流的结果hook api接口

参数

json
{
   "code":string, //状态码
  "id": string, //任务id
  "msg": string //

transcoder_position

述:转码任务进度的结果hook api接口

参数

json
{
   "code":string, //状态码
  "id": string, //任务id
  "msg": string, //原因描述
  "position":int64, //进度位置
  "duration": string 总时长
}

transcoder_error_handler

述:转码错误的结果hook api接口

参数

json
{
   "code":string, //状态码
  "id": string, //任务id
  "msg": string //原因描述
}

metadata_forward

述:发送元数据的hook api接口

参数

json
{
   "code":string, //状态码
  "id": string, //任务id
  "msg": string, //原因描述
}