bPlayer

论坛示例

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

概述

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

  • 配置示例:

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

    AccessKey:百度云Access Key。

open

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

open({params}, callback(ret))

params

rect:

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

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对象
  • 内部字段:
{
       status : true           //布尔类型;是否成功,true|false  
}

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.open({
                  	 rect:{
                    x: 0,
                    y: 0,
                    w: 300,
                    h: 200,
                          },         		  path : 'fs://res/fixvideo.mp4',
                       autoPlay : false,
              },function(ret) {
                  if (ret) {
                      api.alert({msg: JSON.stringify(ret)});
                  }
            });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

play

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

play()

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

pause

暂停播放

pause()

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

stop

停止播放

stop()

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

reset

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

reset({params})

params

clearCanvasWhenReset:

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

示例代码

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

可用性

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对象
  • 内部字段:
{
       status : true           //布尔类型;是否成功,true|false  
}

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.replay({
                       path : 'widget://res/fixvideo.mp4',
                       autoPlay : false,
              },function(ret) {
                  if (ret) {
                      api.alert({msg: JSON.stringify(ret)});
                  }
            });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

show

显示视频播放视图

show()

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

hide

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

hide()

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

close

关闭播放器

close()

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

seek

快速定位播放位置

seek({params})

params

currentPlaybackTime:

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

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

info

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

info(callback(ret))

callback(ret)

ret:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.info(function(ret) {
                 if (ret) {
                         api.alert({msg: JSON.stringify(ret)});
                 }
              });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getSupportedBitrates

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

getSupportedBitrates(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
  bitrates :                      //数组类型;多码率列表集合
  [
      {                              //JSON对象;多码率列表
          resolution :                //JSON对象;分辨率
          {
             width :  					 //数字类型;
             height :                 //数字类型;
          }
          bitrate :                   //数字类型;码率
      }
  ]
 }

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.getSupportedBitrates(function(ret) {
                 if (ret) {
                         api.alert({msg: JSON.stringify(ret)});
                 }
              });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

bitrateIndex

获取当前码率索引

bitrateIndex(callback(ret))

callback(ret)

ret:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.bitrateIndex(function(ret) {
                 if (ret) {
                         api.alert({msg: JSON.stringify(ret)});
                 }
              });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setBitrateIndex

设置当前码率索引

setBitrateIndex({params})

params

bitrateIndex:

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

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

scalingMode

视频显示的缩放模式

scalingMode({params})

params

scalingMode:

  • 类型:字符串类型

  • 描述:(可选项)缩放模式

  • 取值范围:

    'None' : 不缩放;

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

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

    'Fill' : 铺满整个视图

  • 默认:'AspectFit'

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.scalingMode({
                   scalingMode : 'AspectFill'
              });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

naturalSize

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

naturalSize(callback(ret))

callback(ret)

ret:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.naturalSize(function(ret) {
                 if (ret) {
                         api.alert({msg: JSON.stringify(ret)});
                 }
              });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

playbackRate

设置视频播放速率

playbackRate({params})

params

playbackRate:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.playbackRate({
                   playbackRate : 2.0
              });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

downloadSpeed

网络视频下载速度

downloadSpeed(callback(ret))

callback(ret)

ret:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.downloadSpeed(function(ret) {
                 if (ret) {
                         api.alert({msg: JSON.stringify(ret)});
                 }
              });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

forward

快进

forward({params})

params

seconds:

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

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

rewind

快退

rewind({params})

params

seconds:

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

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

thumbnailImageAtCurrentTime

截图,对当前帧进行截图

thumbnailImageAtCurrentTime(callback(ret))

callback(ret)

ret:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.thumbnailImageAtCurrentTime(function(ret) {
                 if (ret) {
                         api.alert({msg: JSON.stringify(ret)});
                 }
              });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

clearCache

清除截图缓存

clearCache()

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

full

全屏

full()

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

cancelFull

取消全屏

cancelFull()

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

isFull

是否全屏状态

isFull(callback(ret))

callback(ret)

ret:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.isFull(function(ret) {
                 if (ret) {
                         api.alert({msg: JSON.stringify(ret)});
                 }
              });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setRect

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

setRect({params})

params

rect:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.setRect({
                    rect:{
                    x: 0,
                    y: 0,
                    w: 300,
                    h: 200,
                          }, 
              });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

setWatermark

setWatermark({params})

params

origin:

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

path:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.setWatermark({
                       origin : {
                             x : 10,
                            y : 10
                         },
                   path : 'widget://res/tab-01.png'
              });

可用性

iOS系统

可提供的1.0.0及更高版本

addEventListener

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

addEventListener({params}, callback(ret))

params

name:

  • 类型:数组类型
  • 描述:(可选项)所要监听的事件名称集合
  • 取值范围:
[   
     'all' : 全部事件;
     
     'leftUp' : 播放器靠左的二分之一内的上滑事件,每滑动5(百分比)回调执行一次;

     'leftDown' : 播放器靠左的二分之一内的下滑事件,每滑动5(百分比)回调执行一次;
    
      'rightUp' : 播放器靠右的二分之一内的上滑事件,每滑动5(百分比)回调执行一次;
    
      'rightDown' : 播放器靠右的二分之一内的下滑事件,每滑动5(百分比)回调执行一次;
    
      'swipeLeft' : 播放器上的左滑事件,每滑动5(百分比)回调执行一次;
    
      'swipeRight' : 播放器上的右滑事件,每滑动5(百分比)回调执行一次;
    
      'click' : 点击播放器事件(单击手势);
    
      'doubleClick' : 双击播放器事件(单击手势);
     
      'playbackState' : 播放器的当前状态。包括其它(other)、播放(playing)、暂停(paused)、中断(interrupted)、快进或快退(seekingForward)、播放完成(complete)、发生错误播放结束(error)、手动停止(stopped);
    
      'loadState' : 播放器的当前加载状态。包括其它状态(otherState)、未知状态(unknown)、可播放状态(playable)、缓冲完成,可以开始播放(playthroughOK)、缓冲中(stalled);
]
  • 默认:全部事件

callback(ret)

ret:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.addEventListener({
              name : ['all','rightUp','click','playbackState']
              },
              function(ret) {
                 if (ret) {
                     api.alert({msg: JSON.stringify(ret)});
                 }
            });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addProgressListener

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

addProgressListener({params}, callback(ret))

params

name:

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

callback(ret, err)

ret:

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

示例代码

 var bPlayer = api.require('bPlayer');
 bPlayer.addProgressListener({
                       name : 'playing'
              },function(ret) {
                  if (ret) {
                      api.toast({
                           msg: JSON.stringify(ret)
                       });
                  }
            });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

removeProgressListener

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

removeProgressListener({params})

params

name:

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

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

enterBackground

进入后台的调用方法

enterBackground()

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

enterForeground

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

enterForeground()

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/04/24