PLDroidMediaStreaming
是
七牛
推出的一款适用于
Android 平台
的
直播
推流 SDK,支持
RTMP
推流,
h.264
视频和
AAC
音频编码,支持
硬编
、
软编
具有直播场景下的重要功能,如:美颜
、背景音乐
、水印
等功能
1.
集成参考文档:PLDroidMediaStreaming 最近更新时间:2018-01-16
2.
参考Demo(GitHub) 1170 stars
1. 版本迭代
最近几个版本更新,更多记录点我查看
2. 集成.jar和.so文件如图
集成APK大小:6个.so文件3.5M、1个.jar450K,文件还是偏大的
3. SDK特点
- 录屏
- 支持美颜
- 纯音频推流
- 支持H.264 和AAC 软编
- 自适应网络质量动态切换码率
4. 集成注意点
- 注意混淆
-keep class com.qiniu.pili.droid.streaming.** { *; }
- 从 v2.3.0 版本开始,增加 libpldroid_streaming_puic.so 库
- 集成开发场景下,建议打开调试日志:
StreamingEnv.setLogLevel(Log.VERBOSE);
还有个Native层的Log开关
mMediaStreamingManager.setNativeLoggingEnabled(false);
- 注意QUIC 推流开关
QUIC 是基于 UDP 开发的可靠传输协议,在弱网下拥有更好的推流效果,相比于 TCP 拥有更低的延迟,可抵抗更高的丢包率
mProfile.setQuicEnable(quicEnable);
- MediaStreamingManager#resume 会进行 Camera 的打开操作,当成功打开后,会返回 STATE.READY 消息,用户可以在接受到 STATE.READY 之后,安全地进行推流操作
mMediaStreamingManager.resume();
- 所有音视频推流相关的具体操作,都在核心类MediaStreamingManager中进行
- 为了更好的和 SDK 交互,接受各种状态和其他信息,需要注册对应的 Listener
mMediaStreamingManager.setStreamingStateListener(this);
mMediaStreamingManager.setStreamingSessionListener(this);
mMediaStreamingManager.setStreamStatusCallback(this);
- 也可以禁音推流
- 若希望使用自己已有项目中的采集/处理模块,可以选用StreamingManager,默认是采用MediaStreamingManager带采集功能
- PLDroidMediaStreaming 封装好了录屏相关的底层操作,用户可以非常方便的进行录屏推流
- 软编模式滤镜实现
- 在 Camera 正常预览之后,可以正常进行截帧功能
mMediaStreamingManager.captureFrame(w, h, new FrameCapturedCallback() {
@Override
public void onFrameCaptured(Bitmap bmp) {
}
}
- 停止推流
mMediaStreamingManager.stopStreaming();
- 在直播场景中,有单主播(采用七牛推流)和多主播(声网推流)PK的场景(实际中有可能集成2者SDK)
场景切换时,需要切换推流方式,我这里碰到一个七牛单主播切换到声网PK场景,摄像头被占用导致声网摄像头采集不到画面的问题
//
MediaStreamingManager manager;
...
// 调用此方法让预览SurfaceView不使用Camera即可
manager.pause();