IOS
MGPMediaPlayerDelegate¶
| API | 回调时机 | 参数说明 |
|---|---|---|
| preparedMediaItem: | 播放video加载成功回调,可以获取在此以后可以获取视频相关信息 | item 传入播放item,只可读 |
| renderStartedMediaItem: | 渲染第一帧画面回调,只要有画面播放以后就会有这个回调,与audioStartedMediaItem可能同时都会回调 | item 传入播放item,只可读 |
| audioStartedMediaItem: | 渲染第一帧音频回调,只要有声音就会有这个回调,与renderStartedMediaItem可能同时回调 | item 传入播放item,只可读 |
| mediaItem:seeking: | seek开始or结束回调 | item 传入播放item,只可读; seeing seek状态回调 |
| mediaItem:suspend:type: | 缓冲资源不足回调 | item 传入播放item,只可读; suspend YES 缓冲中,NO 缓冲结束; |
| MGPPlayerBufferTypeFirstLoad = 0,首次加载缓冲;MGPPlayerBufferTypePlayingLoad = 1,播放过程中缓冲 MGPPlayerBufferTypeSeekLoad = 2,seek缓冲;MGPPlayerBufferTypeFasterLoad = 3,倍速播缓冲;MGPPlayerBufferTypeSmoothChangeLoad = 4,无缝切换缓冲;MGPPlayerBufferTypeAccurateSeekLoad = 5,精准seek缓冲;MGPPlayerBufferTypePerByPerPlayLoad = 6,单步播放缓冲;MGPPlayerBufferTypeInternetBrokenLoad = 8业务层告知断网状态下的缓冲 | ||
| mediaItem:duraction:currentTime: | 播放时间在playing时回调每秒回调一次,seeking和suspend是不回调 | item 传入播放item,只可读; duraction 视频时长;currentTime 视频当前时间 |
| mediaItem:updateBufferProgress:position: | 播放缓存进度回调 | item 传入播放item,只可读; progress 进度;time 视频当前缓冲到的时间 |
| mediaItem:timeoutType:error: | 业务超时回调,回调后调用1.stop,2.重试,3重试失败后报错 | item 传入播放item,只可读; type 超时原因;error 超时错误 |
| mediaItem:completedWithError: | 播放结束回调。error 不等于nil时1.stop,2.重试,3重试失败后报错 | item 传入播放item,只可读; error 播放报错,正常结束为nil |
| mediaItem:changedInternalStatus: | 内部状态更新回调 | item 传入播放item,只可读;status 播放器内部的状态 |
| mediaItem:playError: | 播放报错回调,回调后调用1.stop,2.重试,3重试失败后报错 | item 传入播放item,只可读;error 播放报错 |
| mediaItem:handleDownloadDataError:params: | 网络错误回调,不需要特殊处理 | item 传入播放item,只可读; dataError 错误类型;parms 错误信息 |
| operationWarnning: | 改变播放器状态异常回调,只是用来通知调用方式不对 | warnningInfo 错误信息 |
| mediaItem:audioEffectIsValided: | 是否可以开启音效 | valided == YES 可以开启 |
| mediaItem:onClockPTSWithInfo | 时钟信息回调 | |
| clockType == 0 时钟回调调试 : clockValue1(流原始pts) clockValue2(当前视频帧时间戳)clockValue3(当前进度时间); | ||
| clockType == 1 设置位置位置回调 :clockValue1(闹钟时间) clockValue2(流原始pts)clockValue3(时钟通知时当前播放位置); | ||
| clockType == 2 设置pts区间回调 :clockValue1(流原始pts) clockValue2(时钟起始pts)clockValue3(闹钟结束pts); | ||
| clockType == 3 时钟seek : clockValue1(流原始pts) clockValue2(视频帧时间戳)clockValue3(seek计数); | ||
| clockType == 4 设置pts区间第一次超过endPts : clockValue1(流原始pts) clockValue2(闹钟起始pts)clockValue3(闹钟结束pts); | ||
| clockType == 5 时钟stop : clockValue1(0) clockValue2(0)clockValue3(0); | ||
| clockType == 6 时钟seek : clockValue1(流原始pts) clockValue2(视频帧时间戳)clockValue3(当前进度时间); | ||
| smoothSwitchDownloadKeyFrameInfoWithMediaItem: | 通知获取item对应关键帧信息 | item 传入播放item,只可读 |
| smoothSwitchCompletedWithMediaItem: | 无缝切换完成,当前播放item对应video | item 传入播放item,只可读 |
| smoothSwitchFailedWithMediaItem: | 无缝切换失败 可以重试 | item 传入播放item,只可读; error 播放器报错 |
| smoothSwitchFailedWithMediaItem: | 无缝切换失败 报错以后,重新start播放 | item 传入播放item,只可读;error 播放器报错 |
| mediaItem:smoothSwitchStatus: | 无缝切换状态回调 | item 传入播放item,只可读;status 状态 |
MGPMediaPlayerConfig¶
| API | 参数说明 |
|---|---|
| corePlayerType | 内核类型 默认MGTV内核,苹果内核不生效 |
| decoderType | 解码器类型 |
| specificRenderType | 是否有特殊渲染效果 |
| onlyHardwareDecoder | 是否只使用硬解码器 |
| lowLatency | 是否开启直播低时延 |
| accurateSeek | 是否开启精准seek |
| backgroundPlay | 是否开启后台播放 |
| cacheDNS | 是否开启DNS缓存 |
| cacheDNSTimeOut | DNS缓存超时,单位 s |
| DNSFamilyType | 播放器支持IP地址版本 |
| addrinfoTimeout | 域名解析超时时间 单位s |
| slowConnectionSpeedTimeOut | 弱网超时 单位s |
| playingTimeOut | 播放器播放中缓冲超时时间,单位 s |
| prePareTimeOut | 播放器预加载缓冲超时时间,单位 s |
| onlyAudio | 是否只播放音频 |
| skipErrorTs | 是否跳过错误ts |
| completedCanSeek | 设置播放结束后还可以正常seek |
| enableMissAudio | 设置允许缺失音频播放 |
| enableSkipErrTsToCompleted | 允许跳过出错TS,一直到播放完成为止 |
MGPMediaPlayer¶
| API | 说明 |
|---|---|
| rate | 播放速度,范围0-1 |
| volume | 播放器音量只影响当前播放器实例,范围0-1 |
| playerWithConfig: | config传入以后不能修改 |
| initWithConfig: | config传入以后不能修改 |
| playerWithConfig: | config传入以后不能修改 |
| prepareWithMediaInfo: | mediaInfo传入以后不能修改,不要复用mediaInfo,预加载,需要调用resume才会起播,调用后状态变为 MGPMediaPlayerStatusLoading |
| startWithMediaInfo: | mediaInfo传入以后不能修改,不要复用mediaInfo,预加载,调用后状态变为 MGPMediaPlayerStatusPlaying |
| resume | 只在MGPMediaPlayerStatusLoading,MGPMediaPlayerStatusPaused有效,调用成功后状态变为MGPMediaPlayerStatusPlaying |
| pause | 只在MGPMediaPlayerStatusLoading,MGPMediaPlayerStatusPlaying有效,调用成功后状态变为MGPMediaPlayerStatusPaused |
| stop | 播放器结束或者重启播放必须调用, 调用后状态变为MGPMediaPlayerStatusStoped |
| seekToTime: | 让视频在指定器时间播放,只能在播放中才能生效 ,起播前设置播放时间调用MGMediaInfoItem.lastPlayTime,默认误差10s,设置关键帧信息以后误差5s,开启精准seek以后无误差(等待时间长) |
| pauseLoad | 暂停数据加载 |
| resumeLoad | 恢复数据加载 |
| loopPlayback:fromPosMs:toPosMs: | 循环播放, 播放器启播以后调用才会生效 |
| setFramePtsNotify: | 播放器启播以后调用才会生效 |
| setClockFrameNotifyPos: | 播放器启播以后调用才会生效 |
| setClockFrameNotifyPts:clockTimeEnd: | 播放器启播以后调用才会生效 |
| setStepPlayback: | 播放器启播以后调用才会生效,在播放器pause的情况下强制刷新下一帧 |
MGPMediaInfoItem¶
| API | 说明 |
|---|---|
| supportvsr: | 判断是否支持超清, 需要item传入definition,videowidth,videoheight |
| isOnline: | 判断MGMediaInfoItem是在线播放还是离线播放,需要判断对象,return YES 在线视频,NO离线视频 |
| videoSessionId: | 请求一层接口是时生成,用户当次观看行为的唯一 ID 号表示 |
| fps | 视频帧率,一层下发 |
| videoID | 视频ID |
| definition | 视频清晰度 |
| audioFormat | 一层下发字段 音频压缩格式eg:ACC |
| videoFormat | 一层下发字段 视频压缩格式eg:H264 |
| fileFormat | 一层下发字段 视频封装格式eg:MP4 |
| videowidth | 一层下发的字段,视频宽(给播放器设置关键帧信息时必选,用于校验关键帧信息 |
| videoheight | 一层下发的字段,视频高(给播放器设置关键帧信息时必选,用于校验关键帧信息 |
| isVOD | 点播或直播 |
| isAudio | 纯音频播放 |
| attemptView | 是否是试看 |
| dataSourcePipeline | MGPPlayerDataSourcePipelineNormal = 0,纯播放流 ; MGPPlayerDataSourcePipelineP2P = 1,P2P模式;MGPPlayerDataSourcePipelineUnicomFree = 1<<1,联通免流模式; MGPPlayerDataSourcePipelineDrm = 1<<2, drm;MGPPlayerDataSourcePipelineDrmAndP2P,; MGPPlayerDataSourcePipelineP2P |
| p2pType | p2p类型 |
| sourceType | 视频数据下载方式 |
| businessType | 播放业务类型 |
| videoType | 视频类型 |
| md5Result | 离线播放视频文件校验结果 |
| retryCount | 播放报错后重试次数 |
| lastPlayTime | 启播时播放视频开始播放时间 |
| fileDownloadVersion | 下载sdk版本号 |
| openudid | 设备openudid |
| cdnIP | cdn IP |
| cdnDomain | cdn 域名 |
| originalURL | 服务端返回三层原始地址 |
| realURL | 播放地址 eg:p2p代理地址 or drm 代理地址 or 免流地址 |
| p2pFileHash | p2p taskID |
| videoFileHash | 防篡改hash |
| offlineFileHash | 离线视频文件hash |
| drmFlag | drm加密类型 一层通过drmFlag字段下发,这里音频为20-maes |
| drmFirm | 一层下发 RM厂商类型 音频这里下发一般为 2-自建 |
| drmSolution | 一层下发 DRM解决方案类型 6-自研DRM |
| expressPlayDrmInfo | ExpressPlay Drm 必传 |
| fairplayDrmInfo | fairplay DRM 必传 |
| hdrVideoIntroduction | hdr信息 判断是否是hdr |
| tsFlowTag | 流量标签 |
| hasAD | 视频播放前是否先播放广告 |
| hasVideoKeyInfo | 一层是否下发关键帧信息 |
| smoothSwitchInfo | 无缝切换相关只读 |
| chinaDrmInfo | ChinaDRM 必传 |
| audioExtraInfo | FM audio 播放必传,对应一层下发字段 |
| focusFirstFrame | 强刷第一帧 |
| attempViewType | 爆点试看类型 |
| attempViewType | 爆点试看类型 |