该插件可以实现腾讯云直播拉流播放,支持画面调整、播放控制、消息接收、屏幕截图、截流录制、清晰度无缝切换和直播回看。
该播放器可以支持云点播播放,可以支持画面设置、播放控制、屏幕截图、变速播放、本地缓存、预加载、贴片广告、加密播放、HTTP-REF、硬件加速和多码率支持等。
扫码获取技术支持,引导您跑通Demo和插件接入:
技术支持微信号: ruanyunkeji006
论坛中有我们的使用教程以及示例代码,您可以Demo进入查看详情,联系上方我们技术支持协助接入测试。
接口列表 | 功能 |
---|---|
init | 初始化 |
setPlayerListener | 设置播放监听器 |
removePlayerListener | 移除播放监听 |
destroy | 销毁播放器 |
接口列表 | 功能 |
---|---|
start | 启动从指定URL播放音视频流 |
isPlaying | 获取当前播放状态 |
pause | 暂停播放 |
resume | 继续播放 |
stop | 停止播放音视频流 |
接口列表 | 功能 |
---|---|
setRenderMode | 设置画面的裁剪模式 |
setRenderRotation | 设置画面的方向 |
setHwAcc | 开启硬件加速 |
switchStream | 清晰度切换 |
接口列表 | 功能 |
---|---|
setMute | 设置是否静音 |
setVolume | 设置音量 |
setAudioRoute | 设置声音播放模式 |
setVolumeEvaluationListener | 设置音量大小评估监听 |
removeVolumeEvaluationListener | 移除音量大小评估监听 |
enableVolumeEvaluation | 启用音量大小评估 |
接口列表 | 功能 |
---|---|
setRecordListener | 设置录制监听器 |
removeRecordListener | 移除录制监听 |
startRecord | 开始视频录制 |
stopRecord | 停止录制 |
snapshot | 播放器截图 |
接口列表 | 功能 |
---|---|
prepareLiveSeek | 直播时移准备 |
seek | 直播时移跳转 |
resumeLive | 恢复直播服务 |
初始化拉流播放器
init({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.init({}, ret => {
console.log(ret);
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setPlayerListener
设置播放监听
setPlayerListener(({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onConnectSuccessEvt'
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
##代码示例
livePlayer.setPlayerListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#removePlayerListener
移除播放监听
removePlayerListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.removePlayerListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#destroy
销毁
destroy({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.destroy({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#start
启动从指定 URL 播放音视频流
start({params}, function(ret, err))
flvUrl:
rect:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.start({
rect: {
x: 0,
y: 0,
w: self.playerWidth,
h: self.playerHeight
},
flvUrl: 'http://xxx.xxx.xxx/xxx.flv'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#isPlaying是否正在播放
isPlaying({}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
isPlaying: true
}
isPlaying:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.isPlaying({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#pause
暂停播放
此接口会暂停数据拉流,不会销毁播放器,暂停后,播放器会显示最后一帧数据图像
pause({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.pause({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#resume
继续播放
resume({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.resume({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#stop
销毁播放器及其视图
stop({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.stop({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setRenderMode
设置画面的裁剪模式
setRenderMode({params}, function(ret, err))
mode:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setRenderMode({
mode: 0
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setRenderRotation
设置画面的方向
setRenderRotation({params}, function(ret, err))
rotation:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setRenderRotation({
rotation: 1
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
#setHwAcc
是否开启硬件加速
setHwAcc({params}, function(ret, err))
enable:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setHwAcc({
isHwAcc: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#switchStream
FLV 直播无缝切换
switchStream({params}, function(ret, err))
url:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.switchStream({
url: self.switchUrl
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setMute
设置静音
setMute({params}, function(ret, err))
isMute:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setMute({
isMute: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setVolume
设置音量
setVolume({params}, function(ret, err))
volume:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setVolume({
volume: self.volume
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setAudioRoute
设置声音播放模式(切换扬声器,听筒)
setAudioRoute({params}, function(ret, err))
mode:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setAudioRoute({
mode: self.audioRoute
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setVolumeEvaluationListener
设置音量大小回调接口
setVolumeEvaluationListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onAudioVolumeEvaluationNotify',
volume: 112
}
eventType:
volume:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setVolumeEvaluationListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#removeVolumeEvaluationListener
移除音量大小回调
removeVolumeEvaluationListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.removeVolumeEvaluationListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#enableVolumeEvaluation
启用音量大小提示
enableVolumeEvaluation({params}, function(ret, err))
开启后会在 setVolumeEvaluationListener 中获取到 SDK 对音量大小值的评估。
interval:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.enableVolumeEvaluation({
interval: 300
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setRecordListener
设置短视频录制回调
setRecordListener({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onRecordProgress',
progress: 113
}
eventType:
progress:
result:
{
coverImage: 'xxxx',
videoPath: 'xxxx'
}
coverImage:
videoPath:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setRecordListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#removeRecordListener
移除录制监听
removeRecordListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.removeRecordListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#startRecord
开始录制短视频
startRecord({params}, function(ret, err))
type:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.startRecord({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#stopRecord
结束录制短视频
stopRecord({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.stopRecord({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#snapshot
截屏
snapshot({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
path: '/livePlayer/snapshot/snapshot_xxx.png'
}
path:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.snapshot({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#prepareLiveSeek
直播时移准备,拉取该直播流的起始播放时间。
prepareLiveSeek({params}, function(ret, err))
使用时移功能需在播放开始后调用此方法,否则时移失败。
警告:
非腾讯云直播地址不能时移
appId:
domain:
bizid:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.prepareLiveSeek({
appId: 134321,
domain: 'http://xxx.xxx.xxx/xxx',
bizid: 98
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#seek
播放跳转到音视频流某个时间
seek({params}, function(ret, err))
second:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.liveSeek({
second: 50
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#resumeLive
停止时移播放,返回直播
resumeLive({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.resumeLive({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
##事件回调
您可以为 RY-TencentLivePlayer 对象绑定一个 setPlayerEventListener,之后 SDK 的内部状态信息均会通过事件通知和状态反馈通知给您。
###播放事件
#onConnectSuccessEvt
已经连接服务器
{
eventType: 'onConnectSuccessEvt'
}
eventType:
#onRtmpStreamBeginEvt
已经连接服务器,开始拉流(仅播放 RTMP 地址时会抛送)
{
eventType: 'onRtmpStreamBeginEvt'
}
eventType:
#onRcvFirstIFrameEvt
网络接收到首个可渲染的视频数据包(IDR)
{
eventType: 'onRcvFirstIFrameEvt'
}
eventType:
#onPlayBeginEvt
视频播放开始,如果有转菊花什么的这个时候该停了
{
eventType: 'onPlayBeginEvt'
}
eventType:
#onPlayLoadingEvt
视频播放 loading,如果能够恢复,之后会有 BEGIN 事件
{
eventType: 'onPlayLoadingEvt'
}
不要在收到 onPlayLoadingEvt 后隐藏播放画面 因为 onPlayLoadingEvt -> onPlayBeginEvt 的时间长短是不确定的,可能是 5s 也可能是 5ms,有些客户考虑在 LOADING 时隐藏画面, BEGIN 时显示画面,会造成严重的画面闪烁(尤其是直播场景下)。推荐的做法是在视频播放画面上叠加一个半透明的 loading 动画
eventType:
#onGetMessageEvt
用于接收夹在音视频流中的消息
{
eventType: 'onGetMessageEvt',
msg: 'This is a message'
}
eventType:
msg:
###结束事件
#onPlayEndEvt
视频播放结束
{
eventType: 'onPlayEndEvt'
}
eventType:
#onNetDisconnectErr
网络断连,且经多次重连亦不能恢复,更多重试请自行重启播放
{
eventType: 'onNetDisconnectErr'
}
如何判断直播已结束?
基于各种标准的实现原理不同,很多直播流通常没有结束事件(onPlayEndEvt)抛出,此时可预期的表现是:主播结束推流后,SDK 会很快发现数据流拉取失败(onReconnectWarn),然后开始重试,直至三次重试失败后抛出 onNetDisconnectErr 事件。 所以 onPlayEndEvt 和 onNetDisconnectErr 都要监听,用来作为直播结束的判定事件。
eventType:
###警告事件
如下的这些事件您可以不用关心,我们只是基于白盒化的 SDK 设计理念,将事件信息同步出来
#onVideoDecodeFailWarn
当前视频帧解码失败
{
eventType: 'onVideoDecodeFailWarn'
}
eventType:
#onAudioDecodeFailWarn
当前音频帧解码失败
{
eventType: 'onAudioDecodeFailWarn'
}
eventType:
#onReconnectWarn
网络断连, 已启动自动重连(重连超过三次就直接抛送 onNetDisconnectErr 了)
{
eventType: 'onReconnectWarn'
}
eventType:
#onRecvDataLagWarn
网络来包不稳:可能是下行带宽不足,或由于主播端出流不均匀
{
eventType: 'onRecvDataLagWarn'
}
eventType:
#onVideoPlayLagWarn
当前视频播放出现卡顿
{
eventType: 'onVideoPlayLagWarn'
}
eventType:
#onHWAccelerationFailWarn
硬解启动失败,采用软解
{
eventType: 'onHWAccelerationFailWarn'
}
eventType:
#onVideoDisconntinuityWarn
当前视频帧不连续,可能丢帧
{
eventType: 'onVideoDisconntinuityWarn'
}
eventType:
#onDnsFailWarn
RTMP-DNS 解析失败(仅播放 RTMP 地址时会抛送)
{
eventType: 'onDnsFailWarn'
}
eventType:
#onServerConnFailWarn
RTMP 服务器连接失败(仅播放 RTMP 地址时会抛送)
{
eventType: 'onServerConnFailWarn'
}
eventType:
#onShakeFailWarn
RTMP 服务器握手失败(仅播放 RTMP 地址时会抛送)
{
eventType: 'onShakeFailWarn'
}
eventType:
##接口列表
###初始化与监听
接口列表 | 功能 |
---|---|
init | 播放器初始化 |
setPlayerListener | 设置播放监听器 |
removePlayerListener | 移除播放监听 |
destroy | 销毁播放器 |
###基本控制
接口列表 | 功能 |
---|---|
start | 开始播放 |
pause | 暂停播放 |
resume | 继续播放 |
stop | 停止播放 |
###高级控制
接口列表 | 功能 |
---|---|
setStartTime | 设置开始播放时间 |
isPlaying | 是否正在播放 |
seek | 跳转到1分钟的地方 |
getCurrentPlaybackTime | 获取当前播放时间 |
getDuration | 获取视频总时长 |
getPlayableDuration | 获取可播放时长 |
getWidth | 获取视频宽度 |
getHeight | 获取视频高度 |
setRenderMode | 切换画面的裁剪模式 |
setRenderRotation | 切换画面方向 |
setMute | 切换静音 |
snapshot | 屏幕截图 |
setRate | 切换播放速率 |
getSupportedBitrates | 支持的码率的列表 |
getBitrateIndex | 获取当前正在播放的码率索引 |
setBitrateIndex | 设置当前正在播放的码率索引 |
setMirror | 切换镜像 |
enableHWAcceleration | 开启关闭硬件加速 |
isHWAcceleration | 是否开启硬件加速 |
setAutoPlay | 切换自动播放 |
isAutoPlay | 是否自动播放 |
setLoop | 切换循环播放 |
isLoop | 是否循环播放 |
setToken | 设置加密HLS的token |
getToken | 获取加密HLS的token |
##插件接口
#init
初始化播放器
init({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.init({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setPlayerListener
设置播放器监听
setPlayerListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onPlayBegin'
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setPlayerListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#removePlayerListener
移除播放器监听
removePlayerListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.removePlayerListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#destroy
销毁播放器
destroy({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.destroy({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#start
显示播放器界面
start({params}, function(ret, err))
url:
rect:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.start({
rect: {
x: 0,
y: 0,
w: api.winWidth,
h: api.winWidth * 9 / 16
},
url: 'http://1251049911.vod2.myqclS29wR5K0A.mp4'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#pause
暂停播放
pause({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.pause({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#resume
重置播放器窗口大小
resume({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.resume({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#stop
停止播放
stopPlayer({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.stop({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setStartTime
设置播放开始时间 在start前设置,修改开始播放的起始位置
setStartTime({params}, function(ret, err))
pos:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setStartTime({
pos: 300
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#isPlaying
是否正在播放
isPlaying({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
isPlaying: true
}
isPlaying:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.isPlaying({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#seek
移除事件监听
seek({params}, function(ret, err))
time:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.seek({
value: 600
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#getCurrentPlaybackTime
获取当前播放时间
getCurrentPlaybackTime({}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
time: 110
}
time:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.getCurrentPlaybackTime({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#getDuration
获取视频总时长
getDuration({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
time: 110
}
time:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.getDuration({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#getPlayableDuration
可播放时长
getPlayableDuration({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
time: 110
}
time:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.getPlayableDuration({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#getWidth
获取视频宽度
getWidth({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
width: 98
}
width:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.getWidth({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#getHeight
获取视频高度
getHeight({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
height: 100
}
height:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.getHeight({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setRenderMode
设置画面的裁剪模式
setRenderMode({params}, function(ret, err))
mode:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setRenderMode({
mode: renderMode
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setRenderRotation
设置画面的方向
setRenderRotation({params}, function(ret, err))
rotation:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setRenderRotation({
rotation: rotation
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setMute
设置静音
setMute({params}, function(ret, err))
isMute:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setMute({
isMute: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#snapshot
截图
snapshot({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.snapshot({
path: '/tencentVodPlayer/abc.png';
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setRate
设置播放速率
setRate({params}, function(ret, err))
rate:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setRate({
rate: 0.5
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#getSupportedBitrates
当播放地址为master playlist,返回支持的码率(清晰度)
getSupportedBitrates({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
bitrateList: [
{
index: 0,
width: 110,
height: 220,
bitrate: xxx
}
...
]
}
字段详情:
bitrateList
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.getSupportedBitrates({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#getBitrateIndexgetBitrateIndex({}, function(ret, err))
获取当前正在播放的码率索引
ret:
{
status: true // 布尔类型, true表示操作成功
index: 0
}
index:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.getBitrateIndex({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setBitrateIndex
设置当前正在播放的码率索引,无缝切换清晰度 清晰度切换可能需要等待一小段时间。腾讯云支持多码率HLS分片对齐,保证最佳体验。
setBitrateIndex({params}, function(ret, err))
index:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setBitrateIndex({
index: 0
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setMirror
设置画面镜像
setMirror({params}, function(ret, err))
isMirror:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setMirror({
isMirror: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
是否开启硬件加速 播放前设置有效
setHwAcc({params}, function(ret, err))
enable:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setHwAcc({
enable: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#isHwAcc
是否开启硬件加速
isHwAcc({}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
isHwAcc: true
}
isHwAcc:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.isHwAcc({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统
可提供的1.0.0及更高版本
#setAutoPlay
设置自动播放
setAutoPlay({params}, function(ret, err))
isAutoPlay:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setAutoPlay({
isAutoPlay: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#isAutoPlay
是否自动播放
isAutoPlay({}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
isAutoPlay: true
}
isAutoPlay:
err:
{
code: -1, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.isAutoPlay({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统
可提供的1.0.0及更高版本
#setToken
设置加密HLS的token
setToken({param}, function(ret, err))
token:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -1, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setToken({
token: 'fdsaf2xfdasxx'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#getToken
获取加密HLS的token
getToken({}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
token: 'defxa3xxxuiol'
}
字段详情:
token:
err:
{
code: -1, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.getToken({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统
可提供的1.0.0及更高版本
#setLoop
设置是否循环播放
setLoop({param}, function(ret, err))
isLoop:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.setLoop({
isLoop: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#isLoop
是否循环播放
isLoop({}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
isLoop: true
}
字段详情:
isLoop:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
vodPlayer.isLoop({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统
可提供的1.0.0及更高版本
##事件回调
除了进度信息,SDK 还会通过事件通知和状态反馈同步给您的应用程序很多其它的信息:
###播放事件
#onPlayBeginEvt
视频播放开始,如果有转菊花什么的这个时候该停了
{
eventType: 'onPlayBeginEvt'
}
eventType:
#onPlayProgressEvt
视频播放进度,会通知当前播放进度、加载进度和总体时长
{
eventType: 'onPlayProgressEvt',
playable: 3000,
progress: 100,
duration: 110000
}
eventType:
playable:
progress:
duration:
#onPlayLoadingEvt
视频播放 loading,如果能够恢复,之后会有 onVodPlayLoadingEvt 事件
{
eventType: 'onPlayLoadingEvt'
}
eventType:
#onVodLoadingEndEvt
视频播放 loading 结束,视频继续播放
{
eventType: 'onVodLoadingEndEvt'
}
eventType:
###结束事件
#onPlayEndEvt
视频播放结束
{
eventType: 'onPlayEndEvt'
}
eventType:
#onNetDisconnectErr
网络断连,且经多次重连亦不能恢复,更多重试请自行重启播放
{
eventType: 'onNetDisconnectErr'
}
eventType:
#onHlsKeyErr
HLS 解密 key 获取失败
{
eventType: 'onHlsKeyErr'
}
eventType:
###警告事件
如下的这些事件您可以不用关心,它只是用来告知您 SDK 内部的一些事件。
#onVideoDecodeFailWarn
当前视频帧解码失败
{
eventType: 'onVideoDecodeFailWarn'
}
eventType:
#onAudioDecodeFailWarn
当前音频帧解码失败
{
eventType: 'onAudioDecodeFailWarn'
}
eventType:
#onReconnectWarn
网络断连,已启动自动重连(重连超过三次就直接抛送 PLAY_ERR_NET_DISCONNECT 了)
{
eventType: 'onReconnectWarn'
}
eventType:
#onHWAccelerationFailWarn
硬解启动失败,采用软解
{
eventType: 'onHWAccelerationFailWarn'
}
eventType:
###连接事件
此外还有几个连接服务器的事件,主要用于测定和统计服务器连接时间,您也无需关心:
#onVodPlayPreparedEvt
播放器已准备完成,可以播放
{
eventType: 'onVodPlayPreparedEvt'
}
eventType:
#onRcvFirstIFrameEvt
网络接收到首个可渲染的视频数据包(IDR)
{
eventType: 'onRcvFirstIFrameEvt'
}
eventType:
###分辨率事件
以下事件用于获取画面变化信息,您也无需关心:
#onChangeResolutionEvt
视频分辨率改变
{
eventType: 'onChangeResolutionEvt'
}
eventType:
#onChangeRotationEvt
MP4视频旋转角度
{
eventType: 'onChangeRotationEvt'
}
eventType:
##技术支持
技术支持微信号: ruanyunkeji006