PLDroidMediaStreaming 是七牛推出的适用于 Android 平台的推流 SDK,支持 RTMP 推流、h.264 和 AAC 编码,支持硬编码和软编码。具有丰富的数据和状态回调,方便用户根据自己的业务进行定制化开发。具有直播场景中的重要功能,如美颜、背景音乐、水印等功能。PLDroidMediaStreaming
PLDroidMediaStreaming 是七牛推出的适用于 Android 平台的推流 SDK,支持 RTMP 推流、h.264 和 AAC 编码,支持硬编码和软编码。具有丰富的数据和状态回调,方便用户根据自己的业务进行定制化开发。具有直播场景中的重要功能,如美颜、背景音乐、水印等功能。PLDroidMediaStreaming
PLDroidCameraStreaming 是一个适用于 Android 的 RTMP 直播推流 SDK,可高度定制化和二次开发。特色是同时支持 H.264 软编/硬编和 AAC 软编/硬编。支持 Android Camera 画面捕获,并进行 H.264 编码,以及支持 Android 麦克风音频采样并进行 AAC 编码;还实现了一套可供开发者选择的编码参数集合,以便灵活调节相应的分辨率和码率;同时,SDK 提供数据源回调接口,用户可进行 Filter 处理。借助 PLDroidCameraStreaming ,开发者可以快速构建一款类似 Meerkat 或 Periscope 的 Android 直播应用。
详细的开发指南请参考官方文档
android.arch.lifecycle:extensions:x.y.z 的依赖StreamingEnv.init(Context context) 已被弃用,请更新到 StreamingEnv.init(Context contex, String userId) 进行环境的初始化,其中,userId 代表用户的唯一标识符,用于区分不同的用户例如目前设有如下配置的客户:
StreamingProfile.VideoProfile vProfile =
new StreamingProfile.VideoProfile(20, 1000 * 1024, 60, false);
需将参数调整为:
StreamingProfile.VideoProfile vProfile =
new StreamingProfile.VideoProfile(20, 1000 * 1024, 60, true);
dependencies {
...
compile 'com.qiniu.pili:pili-android-qos:0.8.+'
...
}
<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
…
从 v2.0.1 开始:
CameraStreamingManager,可使用 MediaStreamingManagerdependencies {
...
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 开始,SDK 由 PLDroidCameraStreaming 更名为 PLDroidMediaStreaming,将会提供更丰富的功能接口。有如下重大更新:
MediaStreamingManager,废弃 CameraStreamingManager 且不再被维护StreamingStateChangedListener,并废弃 CameraStreamingManager#StreamingStateListenerStreamingState,并废弃 CameraStreamingManager#STATEStreamingSessionListener,并废弃 CameraStreamingManager#StreamingSessionListenerAVCodecType,并废弃 CameraStreamingManager#EncodingTypecom.qiniu.pili.droid.streaming.*;,因此需要更新混淆相关代码从 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 开始,在使用 SDK 之前,需要保证 StreamingEnv 被正确初始化 ,否则在构造核心类 CameraStreamingManager 的阶段会抛出异常。具体可参看 Demo。
StreamingEnv.init(getApplicationContext());
从 v1.4.6 版本开始,需要在宿主项目中的 build.gradle 中加入如下语句:
dependencies {
...
compile 'com.qiniu:happy-dns:0.2.7'
...
}
否则,在运行时会发生找不到 happydns 相关类的错误。
从 v1.6.0 开始,在使用 SDK 之前,需要保证 StreamingEnv 被正确初始化 ,否则在构造核心类 CameraStreamingManager 的阶段会抛出异常。具体可参看 Demo。
StreamingEnv.init(getApplicationContext());
从 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);
当你遇到任何问题时,可以通过在 GitHub 的 repo 提交 issues 来反馈问题,请尽可能的描述清楚遇到的问题,如果有错误信息也一同附带,并且在 Labels 中指明类型为 bug 或者其他。
如何与现有项目 AndroidX 的依赖兼容?
如何直接推一段音频?
播放器拉流问题
activity添加两个fragment,使用懒加载,第二个fragment,无法调起相机
Pili Streaming not working with Pili Android Version 2.4.0
Unauthorized Package while starting the Streaming
Issue with the support of 64 bit libraries.
怎么动态改变推流地址
通过captureFrame截帧,图像变形。
Youtube rtmp link not working