bPlayer

open pause reset show close info bitrateIndex scalingMode playbackRate forward thumbnailImageAtCurrentTime full isFull setWatermark addProgressListener enterBackground

论坛示例

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

概述

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

  • 配置示例:

  • 字段描述:

    AccessKey:百度云Access Key。

open

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

open({params}, callback(ret))

rect:

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

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. status : true //布尔类型;是否成功,true|false
  2. }

示例代码

  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系统

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))

ret:

  • 类型:JSON对象
  • 内部字段:

示例代码

  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. });

可用性

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. bPlayer.rewind({
  2. });

可用性

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()

示例代码

可用性

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. });

可用性

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. demo.enterForeground();

可用性

Android系统