快速开始

智能视频SDK VideoCreatingSDK

  • 智能视频SDK开发者个人信息保护合规指引
  • 智能视频SDK隐私政策
  • 功能发布记录
  • 播放器SDK
    • SDK&Demo下载
    • 产品简介与下载
    • ios播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
      • 功能列表
      • 高级版功能接入
        • 端上超分功能接入
        • VR功能接入
        • 绿幕抠图功能接入
        • 投屏功能接入
        • 全景声功能接入
        • HDR功能接入
        • 超低延时直播功能接入
    • Unity播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
    • uniapp播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 快速进阶
    • HarmonyOS NEXT
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
    • Andriod播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
      • 高级版功能接入
        • 端上超分功能接入
        • VR功能接入
        • 绿幕抠图功能接入
        • 投屏功能接入
        • 全景声功能接入
        • HDR功能接入
        • 超低延时直播功能接入
    • Web 播放器
      • license指引
      • 简介
      • 使用指南
      • 版本更新记录
      • 开发指南
      • 接口速查
        • 事件响应接口
        • 控制接口
  • 图片加载SDK
    • SDK&Demo下载
    • SDK集成
    • 快速开始
    • 版本更新记录
    • 接口速查
    • 产品简介
    • 快速进阶
  • 短视频SDK
    • 产品描述
      • 名词解释
      • 功能说明
      • 产品简介
      • 核心优势
    • SDK体验
      • 能力限制
      • DEMO体验
      • SDK下载
    • 使用指南
      • License申请
    • 常见问题
      • 内容制作类问题
      • 开发类问题
      • 常见问题总览
      • 常见错误码
    • 购买指南
      • 欠费说明
      • 如何购买
      • 产品定价
    • 开发指南
      • IOS开发说明
        • 录制
        • 编辑
        • 字幕
        • 转场
        • 合成
        • 快速接入
        • IOS版本开发接入文档
      • 视频指导
        • 视频指南
      • Android开发说明
        • 录制
        • Android版本开发接入文档
        • 字幕
        • 转场
        • 合成
        • 快速接入
        • 概述
  • 移动直播SDK
    • 产品描述
      • 名词解释
      • 功能说明
      • 产品简介
      • 核心优势
    • SDK体验
      • demo体验
      • SDK下载
    • 使用指南
      • 接入教程
      • License申请
      • License续费
    • 常见问题
      • 内容制作类问题
      • 开发类问题
      • 常见问题总览
      • 常见错误码
    • 购买指南
      • 欠费说明
      • 如何购买
      • 产品定价
    • 开发指南
      • IOS开发说明
        • 互动直播
        • 特效直播
        • 拉流
        • IOS接入概述
        • 超低延迟直播
        • 直播推流
      • Android开发说明
        • 超低延时直播
        • 互动直播
        • 普通直播
        • 特效直播
        • 拉流
        • Android接入概述
        • 推流参数配置
所有文档
menu
没有找到结果,请重新输入

智能视频SDK VideoCreatingSDK

  • 智能视频SDK开发者个人信息保护合规指引
  • 智能视频SDK隐私政策
  • 功能发布记录
  • 播放器SDK
    • SDK&Demo下载
    • 产品简介与下载
    • ios播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
      • 功能列表
      • 高级版功能接入
        • 端上超分功能接入
        • VR功能接入
        • 绿幕抠图功能接入
        • 投屏功能接入
        • 全景声功能接入
        • HDR功能接入
        • 超低延时直播功能接入
    • Unity播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
    • uniapp播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 快速进阶
    • HarmonyOS NEXT
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
    • Andriod播放器
      • SDK集成
      • 快速开始
      • 简介
      • 版本更新记录
      • 接口速查
      • 快速进阶
      • 高级版功能接入
        • 端上超分功能接入
        • VR功能接入
        • 绿幕抠图功能接入
        • 投屏功能接入
        • 全景声功能接入
        • HDR功能接入
        • 超低延时直播功能接入
    • Web 播放器
      • license指引
      • 简介
      • 使用指南
      • 版本更新记录
      • 开发指南
      • 接口速查
        • 事件响应接口
        • 控制接口
  • 图片加载SDK
    • SDK&Demo下载
    • SDK集成
    • 快速开始
    • 版本更新记录
    • 接口速查
    • 产品简介
    • 快速进阶
  • 短视频SDK
    • 产品描述
      • 名词解释
      • 功能说明
      • 产品简介
      • 核心优势
    • SDK体验
      • 能力限制
      • DEMO体验
      • SDK下载
    • 使用指南
      • License申请
    • 常见问题
      • 内容制作类问题
      • 开发类问题
      • 常见问题总览
      • 常见错误码
    • 购买指南
      • 欠费说明
      • 如何购买
      • 产品定价
    • 开发指南
      • IOS开发说明
        • 录制
        • 编辑
        • 字幕
        • 转场
        • 合成
        • 快速接入
        • IOS版本开发接入文档
      • 视频指导
        • 视频指南
      • Android开发说明
        • 录制
        • Android版本开发接入文档
        • 字幕
        • 转场
        • 合成
        • 快速接入
        • 概述
  • 移动直播SDK
    • 产品描述
      • 名词解释
      • 功能说明
      • 产品简介
      • 核心优势
    • SDK体验
      • demo体验
      • SDK下载
    • 使用指南
      • 接入教程
      • License申请
      • License续费
    • 常见问题
      • 内容制作类问题
      • 开发类问题
      • 常见问题总览
      • 常见错误码
    • 购买指南
      • 欠费说明
      • 如何购买
      • 产品定价
    • 开发指南
      • IOS开发说明
        • 互动直播
        • 特效直播
        • 拉流
        • IOS接入概述
        • 超低延迟直播
        • 直播推流
      • Android开发说明
        • 超低延时直播
        • 互动直播
        • 普通直播
        • 特效直播
        • 拉流
        • Android接入概述
        • 推流参数配置
  • 文档中心
  • arrow
  • 智能视频SDKVideoCreatingSDK
  • arrow
  • 播放器SDK
  • arrow
  • Andriod播放器
  • arrow
  • 快速开始
本页目录
  • 设置AppId(licenseId)
  • 初始化与设置监听
  • 初始化播放器BDCloudMediaPlayer
  • 设置监听回调
  • 设置播放源与显示目标
  • 设置播放源并让播放器解析准备播放
  • 设置播放的显示目标
  • 播放控制
  • 开始播放
  • 暂停播放
  • 停止播放
  • 释放播放器
  • 属性获取
  • 获取音视频时长
  • 获取当前播放位置
  • 获取视频宽高
  • BDCloudVideoView控件
  • BDCloudVideoView播放控制
  • 设置播放相关参数
  • 指定使用TextureView或SurfaceView
  • 自定义"加载中"的界面提示
  • 工程中使用BDCloudVideoView实例
  • 初始化设置播放源并启动
  • 停止并释放BDCloudVideoView所有资源
  • 同一界面播放下一个新的视频源
  • 同一界面播放同样视频的不同分辨率链接

快速开始

更新时间:2025-08-22

设置AppId(licenseId)

用户在使用SDK之前需要去百度智能云控制台申请并下载.license文件放到自己工程assets目录下,并将licenseId设置给播放器。

调用BDCloudMediaPlayer的静态方法setAppId来设置appid(licenseId):

Java
1BDCloudMediaPlayer.setAppId(appid);

初始化与设置监听

初始化播放器BDCloudMediaPlayer

Java
1BDCloudMediaPlayer mMediaPlayer = new BDCloudMediaPlayer(this.getApplicationContext());

设置监听回调

Java
1// 播放器已经解析出播放源格式时回调
2mMediaPlayer.setOnPreparedListener(mPreparedListener);
3// 视频宽高变化时回调, 首次解析出播放源的宽高时也会回调
4mMediaPlayer.setOnVideoSizeChangedListener(mSizeChangedListener);
5// 播放完成时回调
6mMediaPlayer.setOnCompletionListener(mCompletionListener);
7// 播放出错时回调
8mMediaPlayer.setOnErrorListener(mErrorListener);
9// 播放器信息回调,如缓冲开始、缓冲结束
10mMediaPlayer.setOnInfoListener(mInfoListener);
11// 总体加载进度回调,返回为已加载进度占视频总时长的百分比
12mMediaPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener);
13// seek快速调节播放位置,完成后回调
14mMediaPlayer.setOnSeekCompleteListener(mSeekCompleteListener);
15// RTMP 或 http-flv 直播时实时 metadata 信息回调
16mMediaPlayer.setOnMetadataListener(mOnMetadataListener);

直播的播放源在播放过程中,根据播放协议的不同,主播断流时可能走onCompletion回调也可能走onError回调。程序中,需要您检查主播是否完成直播,若未完成直播,自写监听器定期调用 start() 尝试继续拉流播放。

设置播放源与显示目标

设置播放源并让播放器解析准备播放

Java
1// 若想设置headers,需使用setDataSource(String url, Map<String, String> headers) 方法
2mMediaPlayer.setDataSource(strVideoUrl);
3// 播放器仅支持异步准备,在onPrepared回调后方可调用start()启动播放
4mMediaPlayer.prepareAsync();

设置播放的显示目标

支持设置 setDisplay(SurfaceHolder holder)/setSurface(Surface surface)两种设置方法。设置时机一般在onSurfaceCreated/onSurfaceChanged回调函数中,拿到有效的SurfaceHolder时进行设置。

Java
1public void surfaceCreated(SurfaceHolder holder) {
2    mMediaPlayer.setDisplay(holder);
3}

播放控制

开始播放

开始播放或者继续播放均使用start接口。调用该接口时,需保证播放器已经回调onPrepared。

Java
1mMediaPlayer.start();

暂停播放

Java
1mMediaPlayer.pause();

停止播放

Java
1mMediaPlayer.stop();

从stop到再次播放可以走如下几种调用:

  • 不更换播放源:stop() --> prepareAsync() --> start() when prepared
  • 更换播放源:stop() --> reset() --> setDataSource(url) --> prepareAsync() --> start() when prepared

释放播放器

Java
1mMediaPlayer.release();

释放后,重新播放需创建新的player。

属性获取

获取音视频时长

获取音视频时长,单位为毫秒

Java
1long durationInMilliSeconds = mMediaPlayer.getDuration();

获取当前播放位置

获取当前播放位置,单位为毫秒

Java
1long positionInMilliSeconds = mMediaPlayer.getCurrentPosition();

获取视频宽高

Java
1int videoWidth = mMediaPlayer.getVideoWidth();
2int videoHeight = mMediaPlayer.getVideoHeight();

BDCloudVideoView控件

BDCloudVideoView封装了BDCloudMediaPlayer,让您可以直接使用控件的方式来播放视频。该类直接提供了源代码,如果使用,需要将源码复制到您的项目中。大多数情况下,您仅需使用而不需要修改该控件,以防升级时与新版BDCloudVideoView不兼容。

BDCloudVideoView的接口与系统类VideoView接口非常相似,主要作用如下:

  1. 内置视频渲染控件(TextureView/SurfaceView均可选),并可以指定视频渲染的模式(裁剪、填充、铺满),避免您直接操作mediaplayer去渲染视图的麻烦;
  2. 简化了MediaPlayer的控制接口。使用 new BDCloudVideoView --> setVideoPath --> start可以快速播放;
  3. 封装了与BDCloudMediaPlayer几乎一样的参数设置接口。使用该控件,您不需要再跟BDCloudMediaPlayer交互;

BDCloudVideoView播放控制

设置新的播放源

该接口会创建一个全新的BDCloudMediaPlayer内部对象,来播放新的源。

注意:

调用stopPlayback()之前,不可多次调用该接口,以防对象泄漏。

Java
1bdCloudVideoView.setVideoPath(info.getUrl());

启动或恢复播放

Java
1bdCloudVideoView.start();

暂停播放

Java
1bdCloudVideoView.pause(); // 后续可继续调用start()来恢复播放

停止播放

该函数会释放当前的BDCloudMediaPlayer内部对象

Java
1bdCloudVideoView.stopPlayback();

释放全部资源

该函数会释放当前的BDCloudMediaPlayer内部对象和渲染目标等对象。当不再使用bdCloudVideoView对象时务必调用。

Java
1bdCloudVideoView.release();

设置播放相关参数

BDCloudVideoView封装了BDCloudMediaPlayer的几乎所有参数设置接口,并以相同名字命名。

注意:

下列接口,请在bdCloudVideoView.setVideoPath之前调用,因setVideoPath中初始化BDCloudMediaPlayer时,需要用到这些参数的设置。

举例:

Java
1bdCloudVideoView.setLogEnabled(boolean enabled); // 是否显示日志
2bdCloudVideoView.setDecodeMode(int decodeMode); // 设置解码模式
3bdCloudVideoView.setInitPlayPosition(long milliSeconds); // 设置初始播放位置
4bdCloudVideoView.setUseApmDetect(boolean useApmDetect); // 是否开启APM探测;若开启,需额外嵌入APM SDK
5bdCloudVideoView.setMaxProbeTime(int maxProbeTimeInMs); // 设置最大探测时长
6bdCloudVideoView.setMaxProbeSize(int maxProbeSizeInBytes); // 设置最大探测的数据大小
7bdCloudVideoView.setMaxCacheSizeInBytes(int sizeInBytes); // 设置最大缓存数据大小
8bdCloudVideoView.setLooping(boolean isLoop); // 是否循环播放
9bdCloudVideoView.setBufferTimeInMs(int milliSeconds); // 设置"加载中"触发时,缓存多长时间的数据才结束

另外,BDCloudVideoView还可以设置显示模式:

Java
1// VIDEO_SCALING_MODE_SCALE_TO_FIT 填充,遵守宽高比,有黑边
2// VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING 裁剪,遵守宽高比,无黑边,但视频边缘可能被裁剪
3// VIDEO_SCALING_MODE_SCALE_TO_MATCH_PARENT 铺满,不遵守宽高比,直接铺满显示区域
4bdVideoView.setVideoScalingMode(BDCloudVideoView.VIDEO_SCALING_MODE_SCALE_TO_FIT);

指定使用TextureView或SurfaceView

  • TextureView在Android 4.0引入,Android 4.1真正可用(因为4.1加入了setSurfaceTexture接口,可以避免黑屏)。该控件支持动画、旋转、截图等功能。如果您的播放器在ListView或ScrollView中,TextureView是首选,否则滚动的时候可能会出现边缘闪动。但缺点是性能表现不如SurfaceView。
  • SurfaceView在Android 1.0即引入,缺点是不支持旋转等动画,不宜放在有滚动条的viewgroup中。但优点是,有更好的性能,如果长时间播放视频,SurfaceView是首选。

BDCloudVideoView默认优先使用TextureView(即:4.1及以上版本使用TextureView, 老版本使用SurfaceView)。
如果您想设置不管系统版本,始终使用SurfaceView,以达到最好的性能,节省电量消耗,可将以下构造函数的第二个参数设置为false:

Java
1bdCloudVideoView = new BDCloudVideoView(Context context, boolean useTextureViewFirst);

自定义"加载中"的界面提示

默认的加载中提示为 『一个加载圈』+ 『正在缓冲...』的提示。

如果您想定制『加载中』的界面和提示信息,需要调用如下代码:

Java
1bdCloudVideoView.showCacheInfo(false);

然后,就可以在App层面自己写相关的控件,并自己控制该控件的显示与隐藏。

工程中使用BDCloudVideoView实例

初始化设置播放源并启动

Java
1BDCloudVideoView.setAK(ak);
2bdVideoView = new BDCloudVideoView(this);
3/**
4 * 注册listener
5 */
6bdVideoView.setOnPreparedListener(this);
7bdVideoView.setOnCompletionListener(this);
8bdVideoView.setOnErrorListener(this);
9bdVideoView.setOnInfoListener(this);
10bdVideoView.setOnBufferingUpdateListener(this);
11bdVideoView.setOnPlayerStateListener(this);
12
13bdVideoView.setVideoScalingMode(BDCloudVideoView.VIDEO_SCALING_MODE_SCALE_TO_FIT);
14
15RelativeLayout.LayoutParams rllp = new RelativeLayout.LayoutParams(-1, -1);
16rllp.addRule(RelativeLayout.CENTER_IN_PARENT);
17mViewHolder.addView(bdVideoView, rllp);
18
19// 参见demo中的AdvancedMediaController
20mediaController.setMediaPlayerControl(bdVideoView);
21
22bdVideoView.setVideoPath(info.getUrl());
23// BDCloudVideoView无prepare相关接口,允许setVideoPath后立即调用start。
24bdVideoView.start();

停止并释放BDCloudVideoView所有资源

注意:不使用该VideoView时务必调用本接口。

Java
1bdVideoView.stopPlayback();
2bdVideoView.release();

同一界面播放下一个新的视频源

Java
1bdVideoView.stopPlayback(); // 释放上一个视频源
2bdVideoView.reSetRender(); // 清除上一个播放源的最后遗留的一帧
3bdVideoView.setVideoPath(info.getUrl());
4bdVideoView.start();

同一界面播放同样视频的不同分辨率链接

这种情况适用于您不同清晰度的视频是不同的播放链接时。如果不同清晰度视频在同一个链接内(即Master m3u8文件),参考进阶里面的“多码率切换”。

Java
1bdVideoView.stopPlayback(); // 释放上一个视频源
2bdVideoView.setInitPlayPosition(1 * 1000); // 指定初始播放位置,单位为毫秒
3bdVideoView.setVideoPath(info.getUrl());
4bdVideoView.start();

详细代码参见demo中的AdvancedPlayActivity.java或SimplePlayActivity.java

上一篇
SDK集成
下一篇
简介