七牛云直播移动APP快速接入手册

七牛云直播的第一个适用场景就是移动直播APP的开发。数据库

首先,咱们须要熟悉一下移动直播APP的场景之下的业务模型。在这个场景之下,集成七牛云直播推流SDK和播放器的各种手机APP就是直播的推流端,也就是直播流的数据来源端。而推流的方向就是七牛云直播服务端。服务器

还有一个重要的角色就是客户本身的业务服务器,这个业务服务器经过七牛云直播提供的服务端SDK来建立流,发送推流所需的JSON格式数据给客户端,接收流状态改变的回调等。优化

图片描述

在上面的业务模型图中,咱们能够看到客户端推流以前必须从业务服务器获取一个关于流的JSON格式的数据,这个JSON格式的数据包含了推流所必需的信息,好比推流地址等信息,这些信息会被七牛的推流SDK自动解析。spa

服务端建立流和返回对应的JSON数据能够参考上面的服务端SDK的Github地址中的README。设计

客户端请求业务服务器流的JSON数据的时候,业务服务器经过和该用户绑定的流ID去获取流的JSON格式数据。其实这个过程并不须要每次都和七牛云直播服务端交互。通常用户建立账号的时候,能够对应地调用七牛的服务端SDK生成一个流,并把这个流的JSON数据保存到数据库中,由于这个JSON数据通常是不会变化的。接下来的过程就是客户端开始推流,而后七牛云直播服务端接受流数据,推流的上行业务就完成了。code

对于直播应用来说,除了推流功能以外,固然还有就是播放功能了。因为在实践中,RTMP协议的播放延迟小于FLV协议的播放延迟,也小于HLS协议的播放延迟。因此在移动直播中,咱们推荐播放RTMP的地址,可是因为iOS和Android的系统默认的播放器没法播放RTMP协议的流,因此七牛云直播还提供了定制的播放器,方便客户接入直播播放。对象

图片描述

归纳起来就是:blog

  1. 用户注册直播应用的账号
    • 业务服务器收到注册的账号后,能够根据业务设计,这个时候能够主动利用直播服务端SDK中的createStream方法去建立一个流,并把流ID和流的JSON信息分别和用户信息绑定保存到数据库中。流JSON信息经过 stream->toJSONString()方法获取。图片

  2. 请求推流Stream
    • 客户端将要推流的时候,向业务服务器请求推流所须要的流信息,即流对象的JSON表示。开发

  3. 开始推流
    • 客户端推流 给 Pili Streaming Cloud (七牛云直播服务端)

这里面的步骤和上面的业务模型图有一些区别,最主要的缘由就是业务服务器能够优化建立流和获取流信息的步骤。由于对于每个固定的流来说,这些信息都是不变的。

在直播播放的业务逻辑中,客户端首先要从业务服务器获取流播放的RTMP地址。这个地址一样可使用服务端的SDK得到。和上面的模型同样,当一个用户绑定一个流的时候,通常状况下,这个流的RTMP播放地址都是不变的,因此业务服务器能够把相关的信息都写到数据库中,并不须要每次都利用服务端SDK去查询。

归纳起来就是:

  1. 客户端获取直播的播放地址
    • 这个步骤里面的播放地址能够是RTMP,FLV,也能够是HLS的播放地址,分别是经过stream->rtmpLiveUrls()stream->httpFlvLiveUrls(),stream->hlsLiveUrls(),三个方法获取的。出于优化业务逻辑的考虑,这写方法获取的播放地址也能够保存到业务数据库中,由于对于一个流来讲,它们基本上是不变的。

  2. 客户端播放直播的地址

直播流ID

在业务服务器利用服务端SDK和七牛云直播服务交互的过程当中,一个重要的参数就是流的ID,这个流的ID,
由三部分组成。

图片描述

其中 z1 是固定不变的,hubdemo表示注册的直播服务的应用名称,titleofstream指的是利用SDK建立流的时候,指定的流的标题,这个标题不能够包含中文,命名规则为:4到100个字符,英文+数字组成 格式要求:^[a-zA-Z0-9_-]{4,100}$ ,另外直播流标题不能重复。

有些状况下,客户可能拥有本身的房间号,那么创建起房间号和流ID之间的对应关系便可。

推流端快速接入

从上面的介绍中,咱们能够得知,接入七牛云直播推流SDK最简单的只须要一步,就是修改SDK附带的Demo中获取的流的JSON String,就能够进行推流了。

一样,对于播放端来说,只须要把流的直播播放地址填入播放器附带的Demo中便可集成播放功能。

这些步骤的详细信息,能够参考各个SDK的Github主页,有详细的介绍。

相关文章
相关标签/搜索