开发准备
1 设备以及系统
- 设备要求:搭载 Android 系统的设备
- 系统要求:Android 4.3(API 18) 及其以上
2 前置条件
- 已注册七牛账号
- 通过官网申请并已开通直播权限
- SDK v3.0.0 及以后版本需要获取授权才可使用。可通过 400-808-9176 转 2 号线联系七牛商务咨询,或者 通过工单 联系七牛的技术支持进行授权的申请
3 混淆
为了保证正常使用 SDK ,请在 proguard-rules.pro 文件中添加以下代码:
-keep class com.qiniu.pili.droid.streaming.** { *; }
4 版本升级须知
v3.1.5
- 从 v3.1.5 版本开始,将不再支持 armeabi 架构
v3.1.3
- 从 v3.1.3 版本开始,HappyDNS 库务必升级到 1.0.0 版本
v3.1.2
- 从 v3.1.2 版本开始,SDK 将不再强制要求获取 READ_PHONE_STATE 和 ACCESS_FINE_LOCATION 的权限
v3.1.1
- 从 v3.1.1 版本开始,HappyDNS 库务必升级到 0.2.18 版本
v3.0.2
- 从 v3.0.2 版本开始,请务必添加
android.arch.lifecycle:extensions:x.y.z
的依赖 - 从 v3.0.2 版本开始,
StreamingEnv.init(Context context)
已被弃用,请更新到StreamingEnv.init(Context contex, String userId)
进行环境的初始化,其中,userId 代表用户的唯一标识符,用于区分不同的用户
v3.0.1
- 从 v3.0.1 版本开始,Happy DNS 库请务必升级到 0.2.17 版本
v3.0.0
- 从 v3.0.0 版本开始,七牛直播推流 SDK 需要先获取授权才能使用。授权分为试用版和正式版,可通过 400-808-9176 转 2 号线联系七牛商务咨询,或者 通过工单 联系七牛的技术支持。
- v3.0.0 之前的版本不受影响,请继续放心使用。
- 老客户升级 v3.0.0 版本之前,请先联系七牛获取相应授权,以免发生鉴权不通过的现象。
- 基于 114 dns 解析的不确定性,使用该解析可能会导致解析的网络 ip 无法做到最大的优化策略,进而出现推流质量不佳的现象。因此建议使用非 114 dns 解析
v2.4.1
- 从 v2.4.1 开始,VideoProfile 对 H264 格式配置的参数由 annexb 改为 avcc,之前设置为 false 的客户,需要将配置改为 true。
例如目前设有如下配置的客户:
StreamingProfile.VideoProfile vProfile =
new StreamingProfile.VideoProfile(20, 1000 * 1024, 60, false);
需将参数调整为:
StreamingProfile.VideoProfile vProfile =
new StreamingProfile.VideoProfile(20, 1000 * 1024, 60, true);
v2.3.0
- 从 v2.3.0 版本开始,增加 libpldroid_streaming_puic.so 库
- libpldroid_streaming_core.so 依赖于 libpldroid_streaming_puic.so,无论是否启用 QUIC 推流,都需要包含 libpldroid_streaming_puic.so 库
v2.2.0
- 从 v2.2.0 版本开始,须要在 build.gradle 中删除 QoS 依赖
dependencies {
...
compile 'com.qiniu.pili:pili-android-qos:0.8.+'
...
}
v2.1.0
- 使用录屏功能前,须要在 AndroidManifest.xml 中注册 SDK 内置的 Activity:
<activity
android:name="com.qiniu.pili.droid.streaming.screen.ScreenCaptureRequestActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
-
pili-android-qos 最新版本为 0.8.13
-
更新
StreamingPreviewCallback#onPreviewFrame
StreamingPreviewCallback#onPreviewFrame(byte[] data, int width, int height)
调整为
/**
* Called if the {@link StreamingPreviewCallback} registered.
*
* @param data the contents of the preview frame in fmt format
* @param width the width of the frame
* @param height the height of the frame
* @param rotation set the clockwise rotation of frame in degrees to achieve the same effect of preview display.
* @param fmt the format of the frame. See also {@link com.qiniu.pili.droid.streaming.av.common.PLFourCC}
* @param tsInNanoTime the timestamp of the frame
*
* */
boolean StreamingPreviewCallback#onPreviewFrame(byte[] data, int width, int height, int rotation, int fmt, long tsInNanoTime);
v2.0.1
从 v2.0.1 开始:
- 删掉废弃的
CameraStreamingManager
,可使用MediaStreamingManager
- 须在宿主项目中的 build.gradle 中加入如下语句:
dependencies {
...
compile 'com.qiniu:happy-dns:0.2.+'
compile 'com.qiniu.pili:pili-android-qos:0.8.+'
...
}
-
废弃的
StreamingPreviewCallback#onPreviewFrame(byte[] bytes, Camera camera)
被删掉,可使用StreamingPreviewCallback#onPreviewFrame(byte[] bytes, int width, int height)
-
AudioSourceCallback#onAudioSourceAvailable(ByteBuffer byteBuffer, int size, boolean eof)
接口回调中增加时间戳信息,更改为AudioSourceCallback#onAudioSourceAvailable(ByteBuffer byteBuffer, int size, long tsInNanoTime, boolean eof)
v2.0.0 Beta
从 v2.0.0 Beta 开始,SDK 由 PLDroidCameraStreaming 更名为 PLDroidMediaStreaming,将会提供更丰富的功能接口。有如下重大更新:
- 新增
MediaStreamingManager
,废弃CameraStreamingManager
且不再被维护 - 新增一些辅助类并废弃相关的类
- 新增
StreamingStateChangedListener
,并废弃CameraStreamingManager#StreamingStateListener
- 新增
StreamingState
,并废弃CameraStreamingManager#STATE
- 新增
StreamingSessionListener
,并废弃CameraStreamingManager#StreamingSessionListener
- 新增
AVCodecType
,并废弃CameraStreamingManager#EncodingType
- 新增
- 包名更新为
com.qiniu.pili.droid.streaming.*;
,因此需要更新混淆相关代码
v1.6.1
从 v1.6.1 开始,为了便于用户更好地定制化,将 TransformMatrix 信息加入到 SurfaceTextureCallback#onDrawFrame
。因此更新到 v1.6.1 版本之后,若实现了 SurfaceTextureCallback
接口,需要将
int onDrawFrame(int texId, int texWidth, int texHeight);
更改为:
int onDrawFrame(int texId, int texWidth, int texHeight, float[] transformMatrix);
v1.6.0
从 v1.6.0 开始,在使用 SDK 之前,需要保证 StreamingEnv
被正确初始化 ,否则在构造核心类 CameraStreamingManager
的阶段会抛出异常。具体可参看 Demo。
StreamingEnv.init(getApplicationContext());
v1.4.6
从 v1.4.6 版本开始,需要在宿主项目中的 build.gradle 中加入如下语句:
dependencies {
...
compile 'com.qiniu:happy-dns:0.2.7'
...
}
否则,在运行时会发生找不到 happydns 相关类的错误。