音视频处理MCT

    Android-播放器-SDK-简介

    百度智能云播放器 Android SDK (以下简称“播放器 SDK”) 是百度官方推出的 Android 平台使用的软件开发工具包。

    优势

    播放器 SDK 有诸多优势:

    • 内嵌百度自主研发的 T5 播放内核,支持目前所有主流的视频格式 (mp4,avi,wmv,flv, mkv,mov,rmvb 等) 及流媒体协议 (HLS,RTMP,RTSP),弥补了原生播放器在媒体支持格式上的不足,并在兼容性、稳定性和响应速度上有了明显的提高。
    • 提供简单、快捷的接口,帮助开发者高效创建媒体播放应用,有效降低了开发多媒体应用的技术门槛。
    • 提供多种层面的调用方式,您既可根据自身需求定制开发播放界面,也可使用默认播放界面实现快速开发。
    • 提供跨越电视、PC、平板及智能手机的多媒体互动播放的能力,目前支持 Android 端的 DLNA (Digital Living Network Alliance) 控制器,可控制市面上兼容 DLNA 协议的电视、机顶盒产品和大量智能设备,支持音频、视频、图片的跨设备播放,实现基本的遥控器功能的同时给您丰富便捷的互动体验。

    特性

    播放器 SDK 为您提供丰富的特性:

    提供默认播放控件的同时支持用户定制

    • 直接使用 BVideoView 及 BMediaController 快速开发

      为满足您构建复杂、个性媒体播放应用、开发定制化播放器的需求,播放器 SDK 为您提供 BVideoView 和 BMediaController 两个类接口:

      • BVideoView:为媒体播放显示提供支持。
      • BMediaController:为媒体播放控制提供支持。
    • 基于 BVideoView 定制播放控制界面

      在 BMediaController 无法满足您在界面风格及用户交互方面的需求时,您可以不使用 BMediaController,仅仅只使用 BVideoView 来进行播放画面的显示,同时自行定制播放控制界面,通过 BVideoView 获取相关播放信息及注册相关 listener 来实现播放控制的功能,实现 UI 与播放功能的隔离。

    支持外挂字幕

    外挂字幕功能支持播放视频时导入外挂的字幕,提供包括下载字幕、加载本地字幕、字幕显示调整等,目前支持 srt 字幕格式。

    支持多屏互动

    播放器 SDK 除了支持视频播放外,还提供了基于 DLNA 控制器的多屏互动功能,实现手机、平板电脑、PC及智能电视(机顶盒)之间的内容共享与互动。整个库包含一套完整的 SDK,内含丰富的 API,涵盖 DLNA 激活与停止、设备的发现、资源文件的设定、播放控制、状态查询、事件订阅及出错通知,帮助开发者轻松创建功能强大的媒体应用,为用户提供优质家庭影音及娱乐新体验,特点如下:

    • 支持图片、音频、视频等多种格式的媒体文件。
    • 良好的兼容性,支持主流电视(Sony)或机顶盒(小米盒子,Letv,快播大屏幕) 。
    • 功能强大,支持拖动、音量控制等功能,完全可以代替遥控器。
    • 延时小,反应迅速。
    • 体积小,运行时资源损耗小。
    • 使用方便,只需导入 Jar 包即可,无额外库依赖。
    • 同步调用,简化编程;异步通知,实时可靠。

    播放器 SDK 目前仅开放了 DLNA 的控制器功能,使用 API 可以发现并控制网络中的其他 DLNA 设备,如果希望智能设备支持 DLNA 协议并能够被其他的控制器控制,请关注后续的 SDK 更新。

    组件及资源

    组件

    您需要将播放器 SDK 集成到应用中,包括 Jar 包、底层动态库及相关资源文件。每个应用需要独立集成 Jar 包及动态库,如下图所示:

    资源

    播放器 SDK 的完整下载包中包含 demos、javadoc、libs 三部分:

    • demos目录:三个最典型的 Android 示例工程

      • sample1:演示同时使用 BVideoView 和 BMediaController 两个API开发播放器应用,即使用默认播放控制界面快速开发。
      • sample2: 演示只使用 BVideoView API 开发播放器APP,即自己定制播放控制界面。
      • DLNAControllerDemo:演示多屏互动的实现。
    • javadoc目录: 播放器 SDK 相关接口的参考文档,可离线查看index.html获取API的具体说明。
    • libs目录: 播放器 SDK 开发包, 包括 Jar 包、so 及相关资源文件

      • cyberplayer-sdk.jar:java 层实现,您须在工程中加以引用。
      • res:BMediaController 引用的资源文件。
      • cyberplayer-cores:各个手机类型的 so 压缩包, 解压任何一个包获得 libs 目录,将 libs 目录合并到工程根目录的 libs 目录下即可。

    解压后的目录结构如下所示:

    .
    ├── Baidu-T5Player-SDK-Android-<Version>-<Revision>
    │   ├── demos
    │   │   ├── VideoPlayerDemo
    │   ├── extras
    │   │   └── offline-downloader
    │   ├── javadoc
    │   ├── libs
    │   │   ├── arm64-v8a
    │   │   ├── armeabi-v7a
    │   │   └── cyberplayer-sdk.jar
    │   └── res

    CPU 指令集适配

    移动设备 CPU 根据架构不同主要有 ARM 系列, x86 系列等。ARM 系列支持目前主流的 armv7(进一步支持vfp,vfpv3,neon等特性)和arm64。

    为了取得最佳的播放性能, 播放内核针对各种 CPU 及其特性做了相应优化,并且形成了各种版本的 so 动态库。高版本手机可兼容低版本库,但无法使用本机具备的硬件加速特性,影响性能表现,因此建议您选择同手机硬件对应的库匹配使用。SDK 中提供了 4 种不同 CPU 的动态库,具体请参见下表:

    适配原则

    动态库同 CPU 架构和指令集直接关联,选择不匹配的动态库,可能造成应用无法播放或崩溃,因此建议您遵照下述原则进行适配:

    • 选择同 CPU 匹配的动态库以确保视频应用的最佳播放体验。
    • X86 处理器能够以二进制转换的方式支持 ARM 指令集,但会对性能造成较大影响,建议您在 x86 手机上使用原生的 x86 动态库。

    注意:

    • 必须保证SDK的jar包、so包、res资源均被添加到工程与配置中。
    • 必须保证每个CPU架构文件夹的 .so 文件个数相等。在应用安装过程中,系统只会复制相应架构的.so文件到私有文件夹的lib目录下。
    • 手机一般包含主CPU架构和副CPU架构(兼容模式)。arm64/x86的手机均兼容armv7,因而在精简安装包时,可以只保留一个CPU架构的文件夹。
    上一篇
    Android-播放器-SDK-开发指南
    下一篇
    版本更新记录