跳转至

Windows播放器SDK API指南

本文主要介绍Windows芒果TV自研播放器SDK的API.

ImgoPlayer类

ImgoPlayer

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoPlayer ImgoPlayer 创建播放实例类 使用new 新建类

~ImgoPlayer

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
~ImgoPlayer 析构播放器实例类 使用delete销毁类

initPlayer

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
initPlayer ImgoRet 初始化播放器

setDebugLevel

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setDebugLevel ImgoLogLevel level:日志等级 ImgoRet 设置log等级 日志级别定义见 ImgoLogLevel

setLoopPlay

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setLoopPlay int loop:循环次数 ImgoRet 设置是否循环播放 loop为0时,代表无限循环

registerCallback

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
registerCallback CbInfo* pCbInfo:回调参数 ImgoRet 设置播放器回调函数

setDisplay

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setDisplay void* data:对应创建窗口句柄HWND ImgoRet 设置显示窗口 窗口句柄HWND,可以是子窗口

setDatasource

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setDatasource const char* filename:播放地址 ImgoRet 设置播放地址 点播时:filename为播放三层地址(真实CDN地址)本地播放:filename需要以“file://”开头,再加真实路径。比如:file://D:\test.mp4

prepare

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
prepare ImgoRet 设置准备播放(同步) 同步方式需要等函数返回,才能调用后续接口

prepareAsync

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
prepareAsync ImgoRet 设置准备播放(异步) 异步方式直接设置即可,不需要等收到函数返回,可以调用后续函数

start

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
start ImgoRet 开始播放 如果是调用异步准备(prepareAsync)接口,则在等到播放器回调事件MEDIA_PREPARED后再调用start接口。

setDisplayWindow

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setDisplayWindow (x, y, w, h)对应坐标位置及宽高 ImgoRet 设定窗口坐标位置(相对于屏幕) 该接口设置的参数,目前底下没有用到,备用接口setDisplayRect

setDisplayRect

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setDisplayRect (x, y, w, h)对应坐标位置及宽高 ImgoRet 设定窗口坐标位置(相对于窗口) 当上层需要自己指定显示位置时,设置该接口,否则不需要设置

pause

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
pause ImgoRet 暂停播放

resume

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
resume ImgoRet 恢复播放

getDuration

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
getDuration int64_t 获取片源时长 以毫秒为单位,在播放器准备完毕(MEDIA_PREPARED)之后调用有效

getCacheDuration

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
getCacheDuration int64_t 获取可播时长 以毫秒为单位,在调用播放器start之后调用有效

getCurrentPosition

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
getCurrentPosition int64_t 获取当前播放位置 以毫秒为单位,在调用播放器start之后调用有效

seekTo

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
seekTo int64_t value:设定快进快退时间点 ImgoRet 设置快进快退 以毫秒为单位

stop

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
stop ImgoRet 停止播放

reset

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
reset ImgoRet 重置播放 可以再次调用setDataSource等流程继续播放

setPlaySpeed

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setPlaySpeed float speed ImgoRet 设定播放速度 播放速度通常为0.5、1.0、1.25、1.5、2.0等

setAspectRatio

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setAspectRatio ArType type ImgoRet 设置显示比例 比例模式值参数ArType

setVolume

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setVolume int value ImgoRet 设置播放音量 范围0-100

getVolume

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
getVolume int* value ImgoRet 获取当前播放音量 范围0-100

getPlayerStatus

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
getPlayerStatus PlayerStatus 获取当前播放器sdk状态 返回状态定义值参考PlayerStatus

isPlaying

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
isPlaying bool 判断当前是否处于播放状态 接口返回值为true:处于播放状态,false:不处于播放状态。

setControl

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setControl SetCommandId:设置命令id void* parm:设置的值 ImgoRet 给播放器设置参数 支持设置的命令参数见SetCommandId

getControl

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
`getControl GetCommandId:获取命令id void* ret:返回值 ImgoRet 获取播放器当前参数 支持获取的命令参数见GetCommandId

switchSource

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
switchSource SwitchSourceInfo* info:无缝切换的源信息 ImgoRet 设置无缝切换源 返回状态定义值参考PlayerStatus

setKeyFrameInfo

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setKeyFrameInfo const char* buf:关键帧信息的buffer地址 int size:关键帧信息长度 ImgoRet 设置关键帧信息 关键帧信息由一层下发,业务端需要进行一层请求拿到关键帧信息

setSwitchKeyFrameInfo

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setSwitchKeyFrameInfo char* uniqueKey,:切换源目标的uniqueKey const char* buf:关键帧信息的buffer地址 int size:关键帧信息长度 ImgoRet 设置切换源关键帧信息 uniqueKey由vid_def形式组成,vid为视频ID,def为视频清晰度(定义参见VideoDef)当无缝切换过程中收到MEDIA_SMOOTH_SWITCH_SOURCE_COMPLETE 、MEDIA_SMOOTH_SWITCH_SET_KEYFRAME 、MEDIA_SMOOTH_SWITCH_SOURCE_FAIL消息时设置

setAudioEffectConfig

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setAudioEffectConfig const char* config:音效配置信息buffer地址 int config_size:音效配置信息长度 ImgoRet 设置音效配置信息 音效配置信息由一层下发,业务端需要进行一层请求拿到音效配置信息

setFrameImageAtTime

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setFrameImageAtTime FrameImageConfig* config:截取帧的参数 ImgoRet 设置截帧参数 收到MEDIA_GET_FRAME_IMG_INFO消息后,获取截帧结果和信息

getSupportHDTS

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
getSupportHDTS PlayMode playmode:播放模式 char* hdts:返回的hdts字段 ImgoRet 获取播放器支持能力HDTS 业务端在请求一、二层次带上输出参数的hdts,服务器会返回对应三次源地址,主要目的决定拉取的源是H264还是H265

isSupportVSR

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
isSupportVSR int width:视频宽 int height:视频高 int def:清晰度 bool 获取当前视频宽高和播放模式状态下是否支持超分 返回值为true:支持超分,false:不支持超分

setAudioFrameCallback

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
setAudioFrameCallback AudioFrameCallback callback:回调接口 void* userdata:用户设置数据 bool need_resample:是否需要解码后的重采样处理 ImgoRet 设置音频回调接口

播放全局接口

ImgoGlobalInit

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoGlobalInit ImgoRet 全局初始化接口 应用启动时调用一次

ImgoGlobalUnInit

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoGlobalUnInit ImgoRet 全局反初始化接口 应用退出时调用一次

ImgoGetPlayerVersion

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoGetPlayerVersion char* version:播放器版本号 ImgoRet 获取播放器版本号

ImgoGetVsrVersion

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoGetVsrVersion char* version:超分版本号 ImgoRet 获取超分版本号

ImgoSetLogCallback

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSetLogCallback LogCb cb:日志回调函数 ImgoRet 设置日志回调函数 统筹sdk层的打印

ImgoSetGlobalConfig

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSetGlobalConfig const char* json:json格式的播放器开关配置表 ImgoRet 设置全局播放开关配置 播放器开关目前由业务端请求获取,config/play,不设置则使用默认配置

ImgoGetGlobalConfig

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoGetGlobalConfig GetCommandId id:获取参数命令ID void* param:返回的参数 ImgoRet 获取全局播放开关配置 参数命令ID见GetCommandId

ImgoSetSystemInfo

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSetSystemInfo const SysInfo& info:系统信息 ImgoRet 设置系统信息 参数参见SysInfo

ImgoGetHDTS

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoGetHDTS PlayMode playmode:播放模式 char* hdts:返回的hdts ImgoRet 获取播放器支持能力HDTS 主要为简易播放器时调用获取,业务端在请求一、二层次带上输出参数的hdts,服务器会返回对应三次源地址,主要目的决定拉取的源是H264还是H265

ImgoGetAOutDeviceNumber

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoGetAOutDeviceNumber int 获取音频输出设备的个数

ImgoGetAOutDeviceInfo

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoGetAOutDeviceInfo int index:音频输出设备序号 AoutDeviceInfo* info:音频输出设备信息 获取指定音频输出设备的信息

简易播放器接口

ImgoSimplerPlayerCreate

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSimplerPlayerCreate const char* url:播放地址 PlayerCb playerCb:播放器时间回调函数 PlayerCb reportCb:播放器上报回调函数 int video_type:播放视频的类型 ImgoRet 创建简易播放器 video_type:视频类型参数定义参考VideoType

ImgoSimplerPlayerSetParam

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSimplerPlayerSetParam SetCommandId:设置命令id void* parm:设置的值 ImgoRet 简易播放器设置参数 命令参数id参见SetCommandId

ImgoSimplerPlayerSetVolume

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSimplerPlayerSetVolume int value:设置的音量 ImgoRet 简易播放器设置音量 音量取值返回0-100

ImgoSimplerPlayerStartStop

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSimplerPlayerStartStop bool start_on:开始/停止 ImgoRet 简易播放器开始/停止播放 start_on为true:开始,false:停止

ImgoSimplerPlayerPauseResume

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSimplerPlayerPauseResume bool pause_on:暂停/恢复 ImgoRet 简易播放器暂停/恢复播放 pause_on为true:暂停,false:恢复

ImgoSimplerPlayerGetDuration

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSimplerPlayerGetDuration int64_t 简易播放器获取时长 以毫秒为单位

ImgoSimplerPlayerGetCurrentPosition

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSimplerPlayerGetCurrentPosition int64_t 简易播放器获取当前播放进度 以毫秒为单位

ImgoSimplerPlayerDestroy

函数名字 输入参数 输出参数 返回值 函数功能 函数说明
ImgoSimplerPlayerDestroy ImgoRet 简易播放器销毁

枚举定义

ImgoLogLevel

枚举名字 含义 枚举值
ImgoLogLevel 日志等级
IMGO_LOG_VERBOSE 输出所有所有的log 0
IMGO_LOG_DEBUG 输出所有高于debug级别的log 1
IMGO_LOG_INFO 输出所有高于info级别的log 2
IMGO_LOG_WARN 输出所有高于warnning级别的log 3
IMGO_LOG_ERROR 输出所有高于error级别的log 4
IMGO_LOG_NONE 无log输出 5

SwitchMode

枚举名字 含义 枚举值
SwitchMode 切换清晰度模式
E_SWITCH_MODE_AV 输出所有所有的log 0
E_SWITCH_MODE_VIDEO 输出所有高于debug级别的log 1
E_SWITCH_MODE_AUDIO 输出所有高于info级别的log 2

PlayMode

枚举名字 含义 枚举值
PlayMode 播放模式
E_SMART_MODE 智能模式:优先硬解码,失败切换软解码 0
E_COMPATIBLE_MODE 兼容模式:设定软解码 1

DecMode

枚举名字 含义 枚举值
DecMode 解码模式
E_DEC_MODE_GPUAPI 显卡GPU的硬解解码器 0
E_DEC_MODE_HWACCEL 硬件加速解码 1
E_DEC_MODE_SWDEC 软解码 2

VideoQuality

枚举名字 含义 枚举值
VideoQuality 清晰度定义
E_VIDEO_FAST 流畅 0
E_VIDEO_SD 标清 1
E_VIDEO_HD 高清 2
E_VIDEO_FHD 超清 3
E_VIDEO_BD 蓝光 4
E_VIDEO_MZ 芒臻 101

VideoType

枚举名字 含义 枚举值
VideoType 视频类型
E_VIDEO_TYPE_NONE 未定义 0
E_VIDEO_TYPE_VOD 点播 1
E_VIDEO_TYPE_LIVE 直播 2
E_VIDEO_TYPE_LOCAL 本地播放 3
E_VIDEO_TYPE_AD_PRE 前贴广告 4
E_VIDEO_TYPE_AD_MID 中贴广告 5
E_VIDEO_TYPE_AD_END 后贴广告 6
E_VIDEO_TYPE_SHORT_VIDEO 短视频 7
E_VIDEO_TYPE_AUTO_PLAY 8
E_VIDEO_TYPE_FILM_MODE 电影模式 9
E_VIDEO_TYPE_AD_BOOT 10
E_VIDEO_TYPE_GAME_CENTER 11
E_VIDEO_TYPE_HOME_PREVIEW 12
E_VIDEO_TYPE_IMMERSIVE 沉浸式播放 13
E_VIDEO_TYPE_VOD_FEED 点播流feed 14
E_VIDEO_TYPE_FANTUAN 15
E_VIDEO_TYPE_VIP_RECOMMEND 16
E_VIDEO_TYPE_INTERACTIVE 17
E_VIDEO_TYPE_HOME_PREVIEW_FEED 18
E_VIDEO_TYPE_HOME_PREVIEW_DY_FEED 19
E_VIDEO_TYPE_SOCIAL_PLAY 20
E_VIDEO_TYPE_STAR_ROOM_LIVE 21
E_VIDEO_TYPE_MINI_FILM 22
E_VIDEO_TYPE_SECRET_SPACE 23
E_VIDEO_TYPE_GIF_PREVIEW_VIDEO 30
E_VIDEO_TYPE_GIF_PREVIEW_IMAGE 31
E_VIDEO_TYPE_GIF_CREATOR 32
E_VIDEO_TYPE_ALPHA_PLAY 33
E_VIDEO_TYPE_AUDIO 50
E_VIDEO_TYPE_VOD_AUDIO 51
E_VIDEO_TYPE_GIF_CREATOR 52
E_VIDEO_TYPE_SOCIAL_AUDIO_CHAT 53

ReportMode

枚举名字 含义 枚举值
ReportMode 流量上报模式 仅供参考,播放器未定义该枚举
ReportModeUnknown 未知 0
ReportModeBatch 批量上报 1
ReportModeSingle 单切片上报 2

VoutType

枚举名字 含义 枚举值
VoutType 视频输出类型
E_VOUT_D3D D3D渲染 0
E_VOUT_OPENGL OpenGL渲染 1
E_VOUT_SWRENDER 软渲染 2

AoutDeviceType

枚举名字 含义 枚举值
AoutDeviceType 音频输出类型
E_AOUT_DEVICE_COMMON 默认设备 0
E_AOUT_DEVICE_SPEAKER 扬声器 1
E_AOUT_DEVICE_EARPHONE 耳机 2

PlayerStartyMode

枚举名字 含义 枚举值
PlayerStartyMode 音频输出类型
E_PLAYER_START_DEFAULT 正常起播放 0
E_PLAYER_START_AUTO 自动起播 1
E_PLAYER_START_PRELOAD 预下载起播 2

PlayerEnableMode

枚举名字 含义 枚举值 说明
PlayerEnableMode 播放使能模式
E_PLAYER_MODE_DISABLE 使能关闭 0
E_PLAYER_MODE_ENABLE_LIVE 使能live切换 1
E_PLAYER_MODE_ENABLE_LOOP 使能loop切换 2
E_PLAYER_MODE_ENABLE_SMOOTH 使能无缝切换 3 无缝播放时设置

ShowMode

枚举名字 含义 枚举值 说明
ShowMode 播放显示模式
E_SHOW_MODE_NONE 未定义 0
E_SHOW_MODE_VIDEO 显示视频模式 1 视频模式
E_SHOW_MODE_WAVES 柱形波浪模式 2 音频模式
E_SHOW_MODE_RDFT 频谱模式 3 音频模式
E_SHOW_MODE_NB 4

SetCommandId

枚举名字 含义 说明
SetCommandId 设置命令参数ID 未特别说明的,设置时机均可为设置播放地址(setDataSource)之前
E_SET_SWITCH_MODE 设置切换清晰度模式 0
E_SET_P2P_ENABLE 设置P2P开启/关闭 1 true:开启 false:关闭
E_SET_PLAY_MODE 设置播放模式 2
E_SET_DEC_MODE 设置解码模式 3
E_SET_START_TIME 设置起播放位置 4 毫秒为单位
E_SET_UNIQUE_KEY 设置unique_key 5 unique_key由vid_def形式组成,vid为视频ID,def为视频清晰度(定义参见VideoQuality)
E_SET_SUUID 设置播放流水号 6 suuid 由上层生成后再设定
E_SET_VIDEO_TYPE 设置视频类型 7 视频类型参见VideoType
E_SET_DEC_MODE 设置解码模式 8
E_SET_FLOW_REPORT_MODE 设置流量上报模式 9 流量上报模式参考ReportMode
E_SET_HAS_AD 设置当前播放之前是否有广告 10 0:无广告 1:有广告 -1:未知
E_SET_VOUT_TYPE 设置视频输出类型 11 视频输出类型参考VoutType
E_SET_RETRY_CNT 设置重试次数 12 一般设置3次重试
E_SET_DISPLAY_RECT 设置播放显示范围 13 与setDisplayRect效果一致
E_SET_LAST_RETRY 设置是否是最后一次重试 14 true:最后一次重试 false:不是最后一次重试
E_SET_AOUT_DEVICE_TYPE 设置声音输出设备类型 15 调用时机:任何时机
E_SET_PLAY_URL 设置播放url 16 主要为简易播放器设计,目前已弃用
E_SET_PLAY_START_MODE 设置起播模式 17 起播放模式参考PlayerStartyMode
E_SET_RUN_VSR 开启或关闭超分 18 调用时机:任何时机,true:开启 false:关闭
E_SET_AUDIO_EFFECT_ENABLE 开启或关闭音效 19 调用时机:任何时机,true:开启 false:关闭
E_SET_GET_FRAME_IMAGE_MODE 开启截帧模式 20 true:开启 false:关闭
E_SET_FILE_START_TIME 设置文件起始时间 21 单位毫秒
E_SET_AUDIO_DISABLE 设置禁用音频流 22 true:开启 false:关闭
E_SET_VIDEO_DISABLE 设置禁用视频流 23 true:开启 false:关闭
E_SET_AOUT_GUID 设置音频输出设备guid 24 guid为AoutDeviceInfo结构体成员变量
E_SET_PLAYER_ENABLE_MODE 设置播放使能模式 25 播放使能模式参考PlayerEnableMode
E_SET_VIDEO_HASH 设置视频文件hash 26
E_SET_SKIP_TS_ERROR 设置当出现ts文件错误时,是否结束播放 27 true:结束播放 false:跳过播放
E_SET_SHOW_MODE 设置播放显示模式 28 播放显示模式参考ShowMode
E_SET_VIDEO_FORMAT 设置视频格式 29 参数由一层获取
E_SET_AUDIO_FORMAT 设置音频格式 30 参数由一层获取
E_SET_FILE_FORMAT 设置文件格式 32 参数由一层获取
E_SET_ABR_ENABLE 设置启用abr(智能清晰度) 32 是否启用智能清晰度,true:开启 false:关闭
E_SET_ABR_SELECT 设置setlect_abr值 33 参数由一层获取
E_SET_ABR_HASH 设置abr hash 34 参数由abr模块接口获取
E_SET_ABR_TAG 设置abr tag 35 参数由abr模块接口获取