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

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

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

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

图片描述

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

服务端创建流和返回对应的JSON数据可以参考上面的服务端SDK的Github地址中的README。

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

对于直播应用来讲,除了推流功能之外,当然还有就是播放功能了。由于在实践中,RTMP协议的播放延迟小于FLV协议的播放延迟,也小于HLS协议的播放延迟。所以在移动直播中,我们推荐播放RTMP的地址,但是由于iOS和Android的系统默认的播放器无法播放RTMP协议的流,所以七牛云直播还提供了定制的播放器,方便客户接入直播播放。

图片描述

概括起来就是:

  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主页,有详细的介绍。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值