Skip to content

Commit

Permalink
Changed readme
Browse files Browse the repository at this point in the history
  • Loading branch information
Sihan Zhu committed Mar 21, 2018
1 parent 2637635 commit c71d367
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 52 deletions.
82 changes: 30 additions & 52 deletions README.md
Expand Up @@ -2,61 +2,39 @@

PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单、快捷的接口,帮助开发者在 Android 平台上快速开发播放器应用。

## 特性

- [x] Android Min API 9
- [x] 支持 RTMP 和 HLS 协议的直播流媒体播放
- [x] 支持常见的音视频文件播放(MP4、mp3、flv 等)
- [x] 支持 MediaCodec 硬件解码
- [x] 提供播放器核心类 `PLMediaPlayer`
- [x] 提供 `PLVideoView` 控件
- [x] 提供 `PLVideoTextureView` 控件
- [x] 支持多种画面预览模式
- [x] 支持画面旋转(0度,90度,180度,270度)
- [x] 支持画面镜像变换
- [x] 支持播放器音量设置,可实现静音功能
- [x] 支持纯音频播放
- [x] 支持后台播放
- [x] 支持首屏秒开
- [x] 支持直播累积延时优化
- [x] 支持带 IP 地址的播放 URL
- [x] 支持设置封面
- [x] 支持软硬解自动切换
- [x] 支持 HTTPS 协议
- [x] 支持自动重连
- [x] 支持 H.265 播放
- [x] 支持七牛私有 DRM
- [x] 支持边下边播
- [x] 支持 mp4 本地缓存功能
- [x] 支持音视频数据回调
- [x] 支持自定义音视频渲染
- [x] 可高度定制化的 `MediaController`
- [x] 支持 ARM, ARMv7a, ARM64v8a, X86 主流芯片体系架构

## 说明

**v2.0.0** 开始,SDK 全面升级为七牛完全自研的播放器内核,拥有更加优异的性能,升级内容如下:

- [x] 新增倍数播放功能(0.5x,1x,2x,4x 等)
- [x] 新增 mp4 本地缓存功能
- [x] 新增音视频解码数据回调
- [x] 新增自定义音视频播放和渲染
- [x] 新增 HLS 七牛私有 DRM 的支持
- [x] 新增 H.265 格式播放的支持
- [x] 优化 CPU、内存和功耗
- [x] 优化首开效果,首开速度有大幅提升
- [x] 优化包体大小,jar 包和 so 体积均有显著减小
- [x] 优化重连逻辑,不用销毁播放器,网络断开后内部自动重连
- [x] 优化 mp4 点播,使用双 IO 技术更高效地播放 moov 在尾部的 mp4 文件
- [x] 支持播放过程中变速不变调,可实现更平滑的追帧效果,更少的卡顿率

如果从旧版本升级,建议参考 v2.0.0 版本及后续的 [ReleaseNote](https://github.com/pili-engineering/PLDroidPlayer/blob/master/ReleaseNotes/release-notes-2.0.0.md) ,查看注意事项
## 特性

| 功能 | 描述 | 版本 |
|--------------------|--------------------------------------------------------|--------|
| PLMediaPlayer | 类似 Android MediaPlayer,提供了播放器的核心功能 | 1.2.0+ |
| PLVideoView | 类似 Android VideoView,基于 SurfaceView 的播放控件 | 1.2.0+ |
| PLVideoTextureView | 类似 Android VideoView,基于 TextureView 的播放控件 | 1.2.0+ |
| 全架构支持 | 包括 arm64-v8a, armeabi-v7a, armeabi 与 x86 | 1.2.0+ |
| 画面镜像与旋转 | 由 PLVideoTextureView 提供,支持播放画面镜像与旋转 | 1.2.2+ |
| 后台播放 | 退到后台只播放音频 | 1.2.3+ |
| IP 地址播放 | URL 格式:protocol://ip/path?domain=xxxx.com | 1.3.0+ |
| 设置播放封面 | 在播放开始前显示封面 view | 1.4.0+ |
| 软硬解自动切换 | 优先硬解,硬解失败自动切换到软解 | 1.4.1+ |
| 自动直播延迟优化 | 播放直播流时可以通过自动变速播放来优化延迟 | 2.0.0+ |
| H.265 软解 | 软解播放 H.265 视频流 | 2.0.0+ |
| 变速播放 | 支持设置播放速度 | 2.0.0+ |
| MP4 离线缓存 | 支持播放过程中缓存 MP4 文件到本地 | 2.0.0+ |
| 解码数据回调 | 回调解码后的音视频数据,可以外部渲染 | 2.0.0+ |
| 七牛私有加密播放 | 支持播放七牛私有加密视频 | 2.0.0+ |
| 分屏播放 | 由 PLVideoTextureView 提供,支持两个 view 并排分屏播放 | 2.0.3+ |
| 自定义 DNS 服务器 | 支持自定义 DNS 服务器与设置预解析域名 | 2.0.5+ |
| 视频截图 | 支持视频截图 | 2.1.0+ |
| 区域播放 | 支持播放视频画面的部分区域 | 2.1.0+ |
| 音量增强 | 支持将播放音量增强到大于原始音量 | 2.1.0+ |
| 快开模式 | 极大加快相同协议与格式的视频流的打开速度 | 2.1.0+ |

## 使用方法
请参考开发者中心文档:[PLDroidPlayer 开发指南](https://developer.qiniu.com/pili/sdk/1210/the-android-client-sdk)

## 反馈及意见
## 升级指南

从 2.0.0 开始,SDK 全面升级为七牛完全自研的播放器内核,拥有更加优异的性能与更小的包体。推荐所有老版本用户参考文档进行升级:[升级指南](https://github.com/pili-engineering/PLDroidPlayer/blob/master/v2_upgrade_manual.md)

当你遇到任何问题时,可以通过在 GitHub 的 repo 提交 issues 来反馈问题,请尽可能的描述清楚遇到的问题,如果有错误信息也一同附带,并且在 Labels 中指明类型为 bug 或者其他。
## 反馈及意见

[通过这里查看已有的 issues 和提交 Bug](https://github.com/pili-engineering/PLDroidPlayer/issues)
当你遇到任何问题时,可以通过在 GitHub 提交 issue 来反馈问题,请尽可能的描述清楚遇到的问题以及相应的流地址(若为本地视频,推荐上传至云存储并提供链接),推荐提供相应的日志。
68 changes: 68 additions & 0 deletions v2_upgrade_manual.md
@@ -0,0 +1,68 @@
# PLDroidPlayer 升级指南

从 v2.0.0 版本开始,PLdroidPlayer 不再依赖 ijkmediaplayer,全面升级为七牛自研的播放器内核,拥有更优异的性能。目前最新版为 2.1.1

## 更改说明

具体接口使用方式详见[官网文档](https://developer.qiniu.com/pili/sdk/1210/the-android-client-sdk)

### 新增功能

- 倍数播放
- MP4 本地缓存
- 播放加密视频
- H.265 软解
- 解码数据回调
- 大幅减少包体体积
- 大幅优化首开速度
- 变速不变调,平滑追帧
- 视频截图
- 自定义播放区域

### 依赖库

- 原有的 pldroidplayer.so 不再需要,可以删除
- 新增 libqplayer.so,该库为必须依赖
- 新增 libqccodec.so,该库为软解的 codec,若不使用软解,可以删除
- 新增 libqcopenssl.so,若 targetSdkVersion < 24 或不需要播放 https 地址的流,可以删除

### 混淆配置

需要在 `proguard-rules` 中新增

```
-keep class com.pili.pldroid.player.** { *; }
-keep class com.qiniu.qplayer.mediaEngine.MediaPlayer{*;}
```

### 注意事项

- SDK 内部自动处理重连,不再需要外部进行重连
- SDK 所有公开方法的参数名不再混淆,可以直接通过 IDE 查看
- 所有 Listener 类与相关常量从 `PLMediaPlayer` 下调整为单独的接口,并添加 PL 前缀
- 所有 Listener 类的回调方法中的 `PLMediaPlayer` 参数均被移除
- `AVOptions` 与所有 Listener 类的内容均有了较多改变,详见[官网文档](https://developer.qiniu.com/pili/sdk/1210/the-android-client-sdk)

### 新增接口

#### `PLMediaPlayer` / `PLVideoView` / `PLVideoTextureView`

- `captureImage()`: 视频截图
- `setVideoArea()`: 区域播放
- `setVolume()`: 音量扩增
- `setPlaySpeed()`: 倍速播放

#### `PLVideoView`

- `setZOrderOnTop`:同系统 `SurfaceView``setZOrderOnTop`
- `setZOrderMediaOverlay`: 同系统 `SurfaceView``setZOrderMediaOverlay`

#### `PLVideoTextureView`

- `PLVideoTextureView.setSplitMode()`: 启用分屏模式
- `PLVideoTextureView.disableSplitMode()`: 禁用分屏模式

### 删除接口

- `PLNetworkManager`

0 comments on commit c71d367

Please sign in to comment.