七牛雲直播移動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主頁,有詳細的介紹。

相關文章
相關標籤/搜索