直播:七牛推流小记


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. 集成注意点

  1. 注意混淆
-keep class com.qiniu.pili.droid.streaming.** { *; }
  1. 从 v2.3.0 版本开始,增加 libpldroid_streaming_puic.so 库
  2. 集成开发场景下,建议打开调试日志:
StreamingEnv.setLogLevel(Log.VERBOSE);

还有个Native层的Log开关

mMediaStreamingManager.setNativeLoggingEnabled(false);
  1. 注意QUIC 推流开关
    QUIC 是基于 UDP 开发的可靠传输协议,在弱网下拥有更好的推流效果,相比于 TCP 拥有更低的延迟,可抵抗更高的丢包率
mProfile.setQuicEnable(quicEnable);
  1. MediaStreamingManager#resume 会进行 Camera 的打开操作,当成功打开后,会返回 STATE.READY 消息,用户可以在接受到 STATE.READY 之后,安全地进行推流操作
mMediaStreamingManager.resume();
  1. 所有音视频推流相关的具体操作,都在核心类MediaStreamingManager中进行
  2. 为了更好的和 SDK 交互,接受各种状态和其他信息,需要注册对应的 Listener
mMediaStreamingManager.setStreamingStateListener(this);
mMediaStreamingManager.setStreamingSessionListener(this);
mMediaStreamingManager.setStreamStatusCallback(this);
  1. 也可以禁音推流
  2. 若希望使用自己已有项目中的采集/处理模块,可以选用StreamingManager,默认是采用MediaStreamingManager带采集功能
  3. PLDroidMediaStreaming 封装好了录屏相关的底层操作,用户可以非常方便的进行录屏推流
  4. 软编模式滤镜实现
  5. 在 Camera 正常预览之后,可以正常进行截帧功能
mMediaStreamingManager.captureFrame(w, h, new FrameCapturedCallback() {
    @Override
    public void onFrameCaptured(Bitmap bmp) {
    }
}
  1. 停止推流
mMediaStreamingManager.stopStreaming();
  1. 在直播场景中,有单主播(采用七牛推流)和多主播(声网推流)PK的场景(实际中有可能集成2者SDK)

场景切换时,需要切换推流方式,我这里碰到一个七牛单主播切换到声网PK场景,摄像头被占用导致声网摄像头采集不到画面的问题

// 
MediaStreamingManager manager;
...
// 调用此方法让预览SurfaceView不使用Camera即可
manager.pause();

5. 参考

  1. 知识补充与建议
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
直播APP技术架构 直播APP涉及到如下几个方面的角色: 直播业务服务器,该服务器主要是验证客户端的权限并在权限合法之后授权客户端推流参数,客户端使用推流参数进行推流七牛直播系统,该系统主要根据直播业务服务器的请求来创建直播流,获取直播流信息,提取直播流回看地址等信息。 推流客户端,推流客户端主要工作是从直播业务服务器获取直播推流参数,然后将录制的视频流推送到七牛直播系统。 直播业务服务器一般由客户自行开发,用来和七牛直播系统进行交互,七牛提供服务端的SDK,客户可以很方便地使用适合自己的编程语言的SDK开发包来开发服务端API。 推流客户端一般由客户自行开发,用来和直播业务服务器交互,将视频流推送到七牛直播系统或者从直播业务服务器获取观看地址,然后从七牛直播系统根据地址获取视频内容。 直播APP业务流程 直播APP登录帐号,该账号的合法性和其相关的业务逻辑由直播业务服务器提供和验证。 直播APP从直播业务服务器获取推流的参数信息,准备使用集成在APP中的七牛推流SDK来将视频流推送到七牛直播系统 直播APP从直播业务服务器获取推流参数后,在开始推流时,发送开始信号给业务服务器,业务服务器记录下该直播过程的起始时间,并生成唯一性id给客户端 直播APP开始进行推流,推送的直播流数据将通过SDK直接发送到七牛直播系统,推流协议为RTMP。 其他的直播APP客户可以从直播业务服务器获取当前直播RTMP或者HLS的地址进行观看,RTMP的实时性要优于HLS,另外七牛提供的直播播放器支持RTMP协议。 直播APP结束推流,同时发送停止推流信号给直播业务服务器,业务服务器记录下该直播过程的结束时间,可选性地让客户命名直播过程,方便未来回放。 直播APP本身也可以获取已直播完成的视频播放地址进行回看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初心一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值