bPlayer

来自于:开发者立即使用

open play pause stop reset replay show hide close seek info getSupportedBitrates bitrateIndex setBitrateIndex scalingMode naturalSize playbackRate downloadSpeed forward rewind thumbnailImageAtCurrentTime clearCache full cancelFull isFull setRect setWatermark addEventListener addProgressListener removeProgressListener enterBackground enterForeground

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

概述

1、用户在使用SDK之前需要获取百度云Access Key, 参考 安全认证页面 获取AK,如果未登录会提示登录。

2、bPlayer 封装了百度云播放器 SDK。本模块为无UI方案,打开后为一个纯播放器界面。百度云播放器突破 Android、iOS 平台对视频格式的限制,支持目前所有主流的媒体格式(mp4、avi、wmv、flv、mkv、mov、 rmvb 等)。

3、本播放器全屏时为横屏显示,支持屏幕随设备自动旋转。

4、支持iOS 7.0 及以上版本。

iOS端http请求配置

iOS端需要配置ATS(App Transport Security),具体配置方法参考[APP开发技巧] 【官方】iOS修改Info.plist 中“三.3. 配置ATS(App Transport Security)”

使用此模块之前iOS端需先在 config.xml文件配置基础环境属性,方法如下

  • 名称:bPlayer
  • 参数:AccessKey

  • 配置示例:

  1. <feature name="bPlayer">
  2. <param name="AccessKey" value="724c9abc6cd9403daece9d4d17c3e31b"/>
  3. </feature>
  • 字段描述:

    AccessKey:百度云Access Key。

open

本接口进行视频播放器初始化相关工作,可设置是否自动播放

open({params}, callback(ret))

params

rect:

  • 类型:JSON 对象
  • 描述:(可选项)播放器的位置及尺寸
  • 内部字段:
  1. {
  2. x: 0, //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
  3. y: 0, //(可选项)数字类型;(可选项)模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
  4. w: 300, //(可选项)数字类型;模块的宽度;默认值:auto
  5. h: 200 //(可选项)数字类型;模块的高度;默认值:auto
  6. }

path:

  • 类型:字符串类型
  • 描述:视频资源地址,支持网络和本地路径(fs://)
  • 默认:无

autoPlay:

  • 类型:布尔类型
  • 描述:(可选项)是否自动播放。如果设置为true,播放器完成视频初始化后会自动播放视频;如果设置为false,播放器完成视频初始化后,需要开发者主动调用play方法来播放视频
  • 默认:true

enableLooping:

  • 类型:布尔类型
  • 描述:(可选项)设置是否循环播放
  • 默认:false

pauseInBackground:(Android无此字段)

  • 类型:布尔类型
  • 描述:(可选项)设置App进入后台后,再次打开时播放器的状态是否为暂停播放
  • 默认:false

initialPlaybackTime:

  • 类型:数字类型
  • 描述:(可选项)视频开始播放的时刻,单位秒
  • 默认:0秒

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)模块视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:模块依附于当前 window

fixed:

  • 类型:布尔类型
  • 描述:(可选项)模块是否随所属 window 或 frame 滚动
  • 默认:true(不随之滚动)

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status : true //布尔类型;是否成功,true|false
  3. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.open({
  3. rect:{
  4. x: 0,
  5. y: 0,
  6. w: 300,
  7. h: 200,
  8. }, path : 'fs://res/fixvideo.mp4',
  9. autoPlay : false,
  10. },function(ret) {
  11. if (ret) {
  12. alert(JSON.stringify(ret));
  13. }
  14. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

play

当在open方法设置非自动播放,或是暂停之后,调用本方法进行播放

play()

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.play();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

pause

暂停播放

pause()

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.pause();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

stop

停止播放

stop()

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.stop();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

reset

重置,使播放器回到初始状态。需在stop调用之后再调用reset,reset调用之后可以重新指定播放地址

reset({params})

params

clearCanvasWhenReset:

  • 类型:布尔类型
  • 描述:(可选项)在reset时是否清除画布内容(指上次播放视频的画面内容)
  • 默认:false

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.reset({
  3. clearCanvasWhenReset : true
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

replay

重新播放指定播放地址。调用replay前,需要先调用stop停止当前视频的播放,再调用reset,reset播放器到初始状态

replay({params}, callback(ret))

params

path:

  • 类型:字符串类型
  • 描述:视频资源地址,支持网络和本地路径(fs://)
  • 默认:无

autoPlay:

  • 类型:布尔类型
  • 描述:(可选项)是否自动播放。如果设置为true,播放器完成视频初始化后会自动播放视频;如果设置为false,播放器完成视频初始化后,需要开发者主动调用play方法来播放视频
  • 默认:true

enableLooping:

  • 类型:布尔类型
  • 描述:(可选项)设置是否循环播放
  • 默认:false

pauseInBackground:

  • 类型:布尔类型
  • 描述:(可选项)设置App进入后台后,再次打开时播放器的状态是否为暂停播放
  • 默认:false

initialPlaybackTime:

  • 类型:数字类型
  • 描述:(可选项)视频开始播放的时刻,单位秒
  • 默认:0秒

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status : true //布尔类型;是否成功,true|false
  3. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.replay({
  3. path : 'widget://res/fixvideo.mp4',
  4. autoPlay : false,
  5. },function(ret) {
  6. if (ret) {
  7. alert(JSON.stringify(ret));
  8. }
  9. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

show

显示视频播放视图

show()

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.show();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

hide

隐藏视频播放视图,不会改变播放器播放状态

hide()

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.hide();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

close

关闭播放器

close()

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.close();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

seek

快速定位播放位置

seek({params})

params

currentPlaybackTime:

  • 类型:数字类型
  • 描述:(可选项)播放位置,单位秒
  • 默认:0秒

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.seek({
  3. currentPlaybackTime : 20
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

info

获取视频的总时长、视频播放到的时刻、视频的可播放长度。调用info前,需要先调用open

info(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. duration :60 //数字类型;视频的总时长。单位秒(当为直播视频时,duration的值可能为0)
  3. currentPlaybackTime :60 //数字类型;视频播放到的时刻。单位秒
  4. playableDuration :60 //数字类型;视频的可播放长度。单位秒,可播放长度 = 当前视频播放到的位置 + 已缓冲长度
  5. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.info(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getSupportedBitrates

获取多码率列表。如果返回数组中元素个数小于2,表示不是一个多码率HLS视频

getSupportedBitrates(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. bitrates : //数组类型;多码率列表集合
  3. [
  4. { //JSON对象;多码率列表
  5. resolution : //JSON对象;分辨率
  6. {
  7. width : //数字类型;
  8. height : //数字类型;
  9. }
  10. bitrate : //数字类型;码率
  11. }
  12. ]
  13. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.getSupportedBitrates(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

bitrateIndex

获取当前码率索引

bitrateIndex(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. bitrateIndex : //数字类型;当前码率索引
  3. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.bitrateIndex(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setBitrateIndex

设置当前码率索引

setBitrateIndex({params})

params

bitrateIndex:

  • 类型:数字类型
  • 描述:码率索引
  • 默认:无

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.setBitrateIndex({
  3. bitrateIndex : 298000
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

scalingMode

视频显示的缩放模式

scalingMode({params})

params

scalingMode:

  • 类型:字符串类型
  • 描述:(可选项)缩放模式
  • 取值范围:

    ‘None’ : 不缩放;

    ‘AspectFit’ : 等比缩放,可能会产生黑边;

    ‘AspectFill’ : 等比填充,可能有部分画面被裁减;

    ‘Fill’ : 铺满整个视图

  • 默认:’AspectFit’

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.scalingMode({
  3. scalingMode : 'AspectFill'
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

naturalSize

视频的原始分辨率大小。调用naturalSize前需要先调用open

naturalSize(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. width : //数字类型;单位像素
  3. height : //数字类型;单位像素
  4. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.naturalSize(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

playbackRate

设置视频播放速率

playbackRate({params})

params

playbackRate:

  • 类型:数字类型
  • 描述:(可选项)播放速率
  • 取值范围:[0.0, 4.0]
  • 默认:1.0

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.playbackRate({
  3. playbackRate : 2.0
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

downloadSpeed

网络视频下载速度

downloadSpeed(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. downloadSpeed : //数字类型;网络视频下载速度。单位Bps
  3. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.downloadSpeed(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

forward

快进

forward({params})

params

seconds:

  • 类型:数字类型
  • 描述:(可选项)快进的秒数
  • 默认:2秒

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.forward({
  3. seconds : 6.0
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

rewind

快退

rewind({params})

params

seconds:

  • 类型:数字类型
  • 描述:(可选项)快退的秒数
  • 默认:2秒

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.rewind({
  3. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

thumbnailImageAtCurrentTime

截图,对当前帧进行截图

thumbnailImageAtCurrentTime(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. destPath : '' //字符串类型;截图保存路径
  3. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.thumbnailImageAtCurrentTime(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

clearCache

清除截图缓存

clearCache()

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.clearCache();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

full

全屏

full()

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.full();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

cancelFull

取消全屏

cancelFull()

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.cancelFull();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

isFull

是否全屏状态

isFull(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. isFull : true //布尔类型;是否全屏
  3. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.isFull(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setRect

设置视频播放器位置、尺寸

setRect({params})

params

rect:

  • 类型:JSON 对象
  • 描述:(可选项)播放器的位置及尺寸
  • 内部字段:
  1. {
  2. x: 0, //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:open中设置的x坐标
  3. y: 0, //(可选项)数字类型;(可选项)模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:open中设置的y坐标
  4. w: 300, //(可选项)数字类型;模块的宽度;默认值:open中设置的宽度
  5. h: 200 //(可选项)数字类型;模块的高度;默认值:open中设置的高度
  6. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.setRect({
  3. rect:{
  4. x: 0,
  5. y: 0,
  6. w: 300,
  7. h: 200,
  8. },
  9. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

setWatermark

setWatermark({params})

params

origin:

  • 类型:JSON 对象
  • 描述:(可选项)水印图片位置
  • 内部字段:
  1. {
  2. x: 0, //(可选项)数字类型;水印图片位置左上角的 x 坐标(相对于播放器视图);默认值:0
  3. y: 0, //(可选项)数字类型;水印图片位置左上角的 y 坐标(相对于播放器视图);默认值:0
  4. }

path:

  • 类型:字符串类型
  • 描述:用于设置水印的图片路径,要求本地路径(widget://、fs://)
  • 默认:无

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.setWatermark({
  3. origin : {
  4. x : 10,
  5. y : 10
  6. },
  7. path : 'widget://res/tab-01.png'
  8. });

可用性

iOS系统

可提供的1.0.0及更高版本

addEventListener

添加事件监听(手势只有当全屏时有效)

addEventListener({params}, callback(ret))

params

name:

  • 类型:数组类型
  • 描述:(可选项)所要监听的事件名称集合
  • 取值范围:
  1. [
  2. 'all' : 全部事件;
  3. 'leftUp' : 播放器靠左的二分之一内的上滑事件,每滑动5(百分比)回调执行一次;
  4. 'leftDown' : 播放器靠左的二分之一内的下滑事件,每滑动5(百分比)回调执行一次;
  5. 'rightUp' : 播放器靠右的二分之一内的上滑事件,每滑动5(百分比)回调执行一次;
  6. 'rightDown' : 播放器靠右的二分之一内的下滑事件,每滑动5(百分比)回调执行一次;
  7. 'swipeLeft' : 播放器上的左滑事件,每滑动5(百分比)回调执行一次;
  8. 'swipeRight' : 播放器上的右滑事件,每滑动5(百分比)回调执行一次;
  9. 'click' : 点击播放器事件(单击手势);
  10. 'doubleClick' : 双击播放器事件(单击手势);
  11. 'playbackState' : 播放器的当前状态。包括其它(other)、播放(playing)、暂停(paused)、中断(interrupted)、快进或快退(seekingForward)、播放完成(complete)、发生错误播放结束(error)、手动停止(stopped);
  12. 'loadState' : 播放器的当前加载状态。包括其它状态(otherState)、未知状态(unknown)、可播放状态(playable)、缓冲完成,可以开始播放(playthroughOK)、缓冲中(stalled);
  13. ]
  • 默认:全部事件

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. eventType : 'swipeRight' //字符串类型;事件类型
  3. //取值范围:
  4. //'leftUp' : 播放器靠左的二分之一内的上滑事件,每滑动5(百分比)回调执行一次
  5. //'leftDown' : 播放器靠左的二分之一内的下滑事件,每滑动5(百分比)回调执行一次
  6. //'rightUp' : 播放器靠右的二分之一内的上滑事件,每滑动5(百分比)回调执行一次
  7. //'rightDown' : 播放器靠右的二分之一内的下滑事件,每滑动5(百分比)回调执行一次
  8. //'swipeLeft' : 播放器上的左滑事件,每滑动5(百分比)回调执行一次
  9. //'swipeRight' : 播放器上的右滑事件,每滑动5(百分比)回调执行一次
  10. //'click' : 点击播放器事件(单击手势)
  11. //'doubleClick' : 双击播放器事件(单击手势)
  12. //'other' : 其它(对应事件类型'playbackState')(Android无此字段)
  13. //'playing' : 播放(对应事件类型'playbackState')
  14. //'paused' : 暂停(对应事件类型'playbackState')
  15. //'preparing' : 正在准备播放内容(对应事件类型'playbackState')(ios无此字段)
  16. //'prepared' : 播放内容准备完成(对应事件类型'playbackState')(ios无此字段)
  17. //'interrupted' : 中断(对应事件类型'playbackState')(Android无此字段)
  18. //'seekingForward' : 快进或快退(对应事件类型'playbackState')
  19. //'complete' : 播放完成(对应事件类型'playbackState')
  20. //'error' : 发生错误播放结束(对应事件类型'playbackState')
  21. //'stopped' : 手动停止(对应事件类型'playbackState')
  22. //'otherState' : 其它状态(对应事件类型'loadState')
  23. //'unknown' : 未知状态(对应事件类型'loadState')
  24. //'playable' : 可播放状态(对应事件类型'loadState')
  25. //'playthroughOK' : 缓冲完成,可以开始播放(对应事件类型'loadState')
  26. //'stalled' : 缓冲中(对应事件类型'loadState')
  27. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.addEventListener({
  3. name : ['all','rightUp','click','playbackState']
  4. },
  5. function(ret) {
  6. if (ret) {
  7. alert(JSON.stringify(ret));
  8. }
  9. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addProgressListener

添加进度监听,可指定播放进度或缓冲进度

addProgressListener({params}, callback(ret))

params

name:

  • 类型:字符串类型
  • 描述:(可选项)监听的事件类型
  • 默认:playing
  • 取值范围: playing :播放进度; buffering :缓冲进度;

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. currentPlaybackTime : 0 //数字类型;视频播放到的时刻,单位秒,仅当 name 为 'playing' 时返回此字段
  3. playableDuration : 0 //数字类型;视频的可播放长度,单位秒,可播放长度 = 当前视频播放到的位置 + 已缓冲长度,仅当 name 为 'buffering' 时返回此字段
  4. }

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. bPlayer.addProgressListener({
  3. name : 'playing'
  4. },function(ret) {
  5. if (ret) {
  6. api.toast({
  7. msg: JSON.stringify(ret)
  8. });
  9. }
  10. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

removeProgressListener

移除进度监听,可指定播放进度或缓冲进度

removeProgressListener({params})

params

name:

  • 类型:字符串类型
  • 描述:(可选项)监听的事件类型
  • 默认:playing
  • 取值范围: playing :播放进度; buffering :缓冲进度;

示例代码

  1. var bPlayer = api.require('bPlayer');
  2. removeProgressListener({
  3. name : 'playing'
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

enterBackground

进入后台的调用方法

enterBackground()

示例代码

  1. var demo = api.require("bPlayer");
  2. demo.enterBackground();

可用性

Android系统

可提供的1.0.0及更高版本

enterForeground

从后台进入前台调用的方法;

enterForeground()

示例代码

  1. var demo = api.require("bPlayer");
  2. demo.enterForeground();

可用性

Android系统

可提供的1.0.0及更高版本