Appearance
转码微服务协议文档
1 API列表
smtStartPlayerProcess
smtStartTranscoderProcess
smtStopPlayerProcess
smtStopTranscoderProcess
smtSetServerConfig
smtGetMediaList
smtGetMediaInfo
smtGetServerConfig
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
描述:开始本地文件播放任务
参数:
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
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
描述:开始转码任务
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string,//鉴权码
"pull_url":string, //需要转码的视频文件地址
"out_url": string //转码文件输出地址
}3. smtStopPlayerProcess
描述:停止并删除本地文件播放任务
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string,//鉴权码
"id": string //视频文件播放任务的GUID,由本服务返回给上级服务的
}4. smtStopTranscoderProcess
描述:停止并删除转码任务
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string,//鉴权码
"id": string //转码任务的GUID,由本服务返回给上级服务的
}5. smtSetServerConfig
描述:修改配置文件
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
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
描述:获取所有正在处理的媒体任务列表,播放或转码
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
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
描述:获取指定任务的媒体信息,播放或转码
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
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
描述:获取配置文件
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
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**
描述:视频文件播放时,暂停
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"id":string, //视频文件播放任务的GUID
}**10.****smtGetDuration**
描述:获取视频文件总时长,单位为秒
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"path":string, //视频文件地址
}返回的信息
cpp
{
"code":string, //鉴权码
"msg": string,
"id": string,
"data": {
"duration":int64//视频文件总时长,单位为秒
}
}11.smtGetPlayerPosition
描述:获取当前本地视频文件播放时间点,单位为秒
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"id":string //视频文件播放任务的GUID
}返回的信息
cpp
{
"code":string, //鉴权码
"msg": string,
"id": string,
"data": {
"position":int64//当前播放时间点,单位为秒
}
}12.smtPlayerSeek
描述: 视频文件播放时,跳转到某一个百分比
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"id":string, //视频文件播放任务的GUID
"percent":double// 百分比参数(0-1)
}13.smtPlayerFastSeek
描述:视频文件播放时,快进或者后退十秒
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"id": string, //视频文件播放任务的GUID
"farward": string // 1-前进10秒,0-后退10秒
}14.smtLanguageSwitch
描述:OSD语言切换
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"id": string, //视频文件播放任务的GUID
"player_or_transcoder": int, // 0表示player,1表示transcoder
"language": int //0-中文, 1-英文,2-俄文,3-韩文
}15.smtOsdSwitch
描述:OSD开关
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
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
描述:直播本地播放文件
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"id": string, //视频文件播放任务的GUID
"dst_url": string, //直播的目标地址
"bitrate": int64 //直播的码率,单位bps,如果为负数,则使用输入视频的码率
}17.smtStopLive
描述:停止直播本地播放文件
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"id": string //视频文件播放任务的GUID
}18.smtDefoggingSwitch
描述:本地播放文件时,去雾(需要GPU设备支持)
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"id": string, //视频文件播放任务的GUID
"state": bool //true-打开,false-关闭
}19.smtStabilizingSwitch
描述:本地播放文件时,稳像(需要GPU设备支持)
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string, //鉴权码
"id": string, //视频文件播放任务的GUID
"state": bool //true-打开,false-关闭
}20.smtScrewSlantCorrectionSwitch
描述:旋偏纠正开关
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
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信息
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
paramsStr示例如下:
cpp
{
"secret":string //鉴权码
}返回的信息
cpp
{
"code":string, //鉴权码
"msg": string,
"id": string,
"gpu_list":[{
"gpu_id":int //
"gpu_name“: string //gpu名字
}]
}22.smtStartMetaDataForward
描述:开始发送元数据(udp方式),要转发或者直播开启成功后在调用这个接口
参数
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| paramsStr | std::string | json形式的参数列表 |
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, //原因描述
}
