Android播放器-2.0-上线公告
所有文档

          音视频处理 MCP

          Android播放器-2.0-上线公告

          Android播放器1.0的接口是基于BVideoView,2.0 接口是基于BDCloudMediaPlayer。为了老用户的顺利迁移和新客户的快速接入,本文档详细说明如何从1.0 版本的BVideoView迁移到2.0 BDCloudVideoView

          迁移至BDCloudVideoView

          复制BDCloudVideoView代码到工程中

          2.0 新版播放器的jar包仅包含BDCloudMediaPlayer,未包含View控件,但百度开源了BDCloudVideoView控件的代码,您可以从解压包的根目录或Sample工程中拿到,将代码复制到您的工程中即可。

          BDCloudVideoView接口特点

          BDCloudVideoView接口跟安卓系统的VideoView高度一致,您从BVideoView替换为BDCloudVideoView之后,可能发现少了一些接口。

          为了减少BDCloudVideoView对外接口的复杂性,有很多BDCloudMediaPlayer层的接口被封装在了BDCloudVideoView内部方法中,您可以参考开发文档中的BDCloudVideoView了解如何使用BDCloudVideoView。

          注意:多数时候,请不要修改BDCloudVideoView代码,以免给后续升级带来麻烦。

          demo参考

          demo即使用了BDCloudVideoView来播放视频,下面列出demo的层级关系,以供参考:

          ------------------------------
          Activity与控制条
          包名:com.baidu.cloud.videoplayer.demo
          涉及:应用界面如AdvancedPlayActivity/SimplePlayActivity,控制条如AdvancedMediaController/SimpleMediaController。
          作用:在Activity中创建BDCloudVideoView对象,在控制条中实现播放控制。
          --------------↓----------------
          BDCloudVideoView
          包名:com.baidu.cloud.videoplayer.widget
          涉及:BDCloudVideoView控件类及其依赖的类。代码位于demo中。
          作用:封装了BDCloudMediaPlayer对象、视频渲染控件,有自己的状态基变化。
          --------------↓----------------
          BDCloudMediaPlayer
          包名:com.baidu.cloud.media.player
          涉及:播放器Player及监听器等,代码位于bdplayer.jar中。
          作用:解析播放源并填充渲染目标、实际的播放控制逻辑。
          ------------------------------

          release释放接口

          新的BDCloudVideoView在使用完成后,需要释放播放器player和渲染资源。

          bdCloudVideoView.release();

          注意:请在不使用BDCloudVideoView实例后,务必调用释放接口。

          时间单位的变化

          BDCloudVideoView以及BDCloudMediaPlayer类中的涉及到时间的单位都是毫秒

          long durationInMilliSeconds = mMediaPlayer.getDuration();
          long positionInMilliSeconds = mMediaPlayer.getCurrentPosition();
          seekTo(timeInMilliSeconds);

          1.0 的BVideoView的时间单位多为秒;在 2.0 新版里面设置时,需要在原来基础上乘以1000,转换为毫秒。

          监听Listener的变化

          原Listener 新Listener或替代方法
          BVideoView.OnCompletionListener IMediaPlayer.OnCompletionListener
          BVideoView.OnCompletionWithParamListener 无,需分别处理Completion和Error的回调
          BVideoView.OnErrorListener IMediaPlayer.OnErrorListener
          BVideoView.OnInfoListener IMediaPlayer.OnInfoListener
          BVideoView.OnNetworkSpeedListener 无,需自己开定时器调用getDownloadSpeed()接口获得下载速率
          BVideoView.OnPlayingBufferCacheListener 无,不再提供『加载中』的百分比提示
          BVideoView.OnPositionUpdateListener 无,需自己开定时器调用getCurrentPosition()接口
          BVideoView.OnPreparedListener IMediaPlayer.OnPreparedListener
          BVideoView.OnSeekCompleteListener IMediaPlayer.OnSeekCompleteListener
          BVideoView.OnTotalCacheUpdateListener IMediaPlayer.OnBufferingUpdateListener
          - IMediaPlayer.OnVideoSizeChangedListener
          - BDCloudVideoView.OnPlayerStateListener,状态回调监听,以便修改播放控制条
          • 关于OnPositionUpdateListener,可以参考demo中SimpleMediaController类的startPositionTimer()和stopPositionTimer()相关函数及其调用逻辑。
          • 直播播放源在播放过程中,根据播放协议的不同,主播断流时可能走onCompletion回调也可能走onError回调。程序中,需要您检查主播是否完成直播,若未完成直播,自写监听器定期调用 start() 尝试继续拉流播放。

          接口变化

          下列接口,在2.0 的BDCloudVideoView类里面可能没有,但只要在BDCloudMediaPlayer中有,就可以在BDCloudVideoView中增加该接口,或者在BDCloudVideoView类的createPlayer()函数(推荐)中直接设置好。

          1.0 接口 2.0 接口 说明
          BVideoView#getCurrentPlayingUrl() BDCloudVideoView#getCurrentPlayingUrl() -
          BVideoView#selectResolutionType(index) BDCloudVideoView#selectResolutionByIndex(int index)该方法用于播放过程中切换多码率 切换多码率。1.0 接口中涉及selectResolutionType(BVideoView.RESOLUTION_TYPE_AUTO);的地方直接删除即可,因为其实际选择第一条Variant进行播放,与不设置时效果相同。
          BVideoView#setCacheBufferSize(long size) BDCloudVideoView#setMaxCacheSizeInBytes(int size) -
          BVideoView#setCacheTime(float timeSec) BDCloudVideoView#setBufferTimeInMs(int milliSec) 已缓冲了某个播放长度所需的数据,则回调Buffering_End的info
          BVideoView#setCustomHttpHeader(String header) BDCloudVideoView#setHeaders(Map\<String, String> headers) -
          BVideoView#setDecodeMode(int mode) BDCloudVideoView# setDecodeMode(int mode) 2.0 新版支持AUTO(优先硬解)和SW,旧版仅支持SW
          BVideoView#setEnableDolby(boolean enableDolby) -
          BVideoView#setEnableFastStart(boolean isEnable) 无,会自动检测 -
          BVideoView#setFirstBufferingTime(float timeSec) BDCloudVideoView#setMaxProbeTime(int maxProbeTime) -
          BVideoView#setLogLevel(int level) BDCloudVideoView#setLogEnabled(boolean enable)
          BVideoView#setUseApmDetect(boolean useApmDetect) BDCloudVideoView#setUseApmDetect(boolean useApmDetect) 开启后,均需额外嵌入APM SDK
          BVideoView#setUserAgent(String strUA) BDCloudVideoView#setHeaders(Map\<String, String> headers) -
          BVideoView#setVideoPath(String path) BDCloudVideoView#setVideoPath(String path) -
          BVideoView#setVideoPath(String path, String withToken) -BDCloudVideoView#setVideoPathWithToken(String path, String token)
          BVideoView#setVideoScalingMode(int mode) BDCloudVideoView#setVideoScalingMode(int mode) 旧版支持填充模式和裁剪模式;2.0 新版增加了铺满模式 -
          BVideoView#setWatermarkText(String text) 无,需自己加浮层实现 -
          BVideoView#showCacheInfo(boolean show) BDCloudVideoView#showCacheInfo(boolean show) -
          BVideoView#takeSnapshot() BDCloudVideoView#getBitmap() 仅TextureView显示时支持截图
          - BDCloudVideoView#release() 销毁BDCloudVideoView内部的播放资源和渲染资源

          迁移FAQ

          支持多实例

          • 1.0 版本不支持多实例,这需要等待旧的BVideoView实例释放完成后,才能创建新的实例;
          • 2.0 版本已经支持多实例,不同BDCloudVideoView之间互不影响。

          更好的解码性能

          • 1.0 版本仅能使用软解;2.0 新版本支持硬解。
          • 2.0 版本的解码模式默认为AUTO(即优先硬解,找不到硬解解码器时自动转为软解)。如果您想总使用软解,可以通过setDecodeMode接口设置。

          更强大的渲染支持

          • 1.0 版本播放器渲染目标为SurfaceView,该目标不支持移动、旋转等动画,在Listview等View中滚动时会有闪动。
          • 2.0 版本播放器,支持TextureView和SurfaceView渲染。默认渲染目标为TextureView,该目标支持移动旋转的功能动画,可以在ListView中正常使用。 SurfaceView与TextureView的区别,参见开发文档中的BDCloudVideoView部分。

          迁移中遇到问题,请联系我们

          迁移过程中遇到问题,请提交工单论坛,我们将尽快与您联系。

          原百度智能云播放器 Android SDK 1.0 帮助文档请参考Android SDK 1.0

          上一篇
          版本更新记录
          下一篇
          百度Android播放器1.0帮助文档