随着娛樂直播行業的發展,平台玩法越來越多。其中秀場連麥直播玩法人氣較高,一方面改變了主播與觀衆對立的體驗,另一方面拉近了主播與觀衆的距離,對于拉動主播收入平台營收起到了十分重要的作用。在此衍生出來的如PK,付費問答,語音連麥等玩法成為各大直播平台的标配。
本篇文章将介紹如何結合阿裡雲的音視訊通信服務和直播服務實作連麥直播。
方案前提
- 已經開通了阿裡雲的直播服務并且配置了直播域名,可以完成基礎的rtmp直播功能
- 已經開通了阿裡雲的音視訊通信服務,可以完成多個使用者的音視訊通話
業務流程
下圖所展示的基于音視訊通信 RTC 和直播服務實作一次連麥直播的調用流程,其中灰色部分為您的自建開發程式或AppServer服務,橙色是阿裡雲的音視訊通信 RTC 和直播服務。
- 主播調用RTC接口加入頻道
- AppServer調用旁路直播接口進行直播
- 觀衆調用RTC接口加入和主播同一個頻道
使用步驟
如何進行主播、觀衆加入RTC頻道,直播如何生成直播位址已經方案前提裡已經說明了,本章節就不會說明這兩個環節的實作方法。主要描述旁路直播相關功能的實作
- 主播加入RTC頻道12345後,AppServer按照直播位址的生成方法生成一個直播位址,比如:rtmp://push.rtctest.cn/12345/12345?auth_key=1577967820-0-0-f9a7e4a47feddbe7bc343cbfb559d552
- AppServer調用StartMPUTask接口配置RTC的旁路直播參數: https://help.aliyun.com/document_detail/93183.html?spm=a2c4g.11186623.6.628.497b5eaabJ9t0T 示例代碼如下:
from aliyunsdkcore.client import AcsClient
from aliyunsdkrtc.request.v20180111 import StartMPUTaskRequest
import aliyunsdkcore.request as rtc_request
import aliyunsdkcore.http.protocol_type as rtc_protocol_type
accessKeyID = 'xxx'
accessKeySecret = 'xxx'
region_id = 'cn-hangzhou'
app_id = 'xxx'
channel_id = '12345'
def StartMPU(client):
request = StartMPUTaskRequest.StartMPUTaskRequest()
request.set_AppId(app_id)
request.set_ChannelId(channel_id)
request.set_TaskId('abc')
request.set_TaskProfile('2IN_720P')
request.set_MediaEncode(1)
request.set_BackgroundColor(0)
LayoutIds = []
LayoutIds.append(1)
LayoutIds.append(2)
request.set_LayoutIdss(LayoutIds)
request.set_StreamURL('rtmp://push.rtctest.cn/1/1?auth_key=1577967820-0-0-f9a7e4a47feddbe7bc343cbfb559d552')
rtc_request.set_default_protocol_type(rtc_protocol_type.HTTP)
response = client.do_action_with_exception(request)
return response
client = AcsClient(accessKeyID, accessKeySecret, region_id)
print StartMPU
- 觀看直播的觀衆通過直播的播流位址觀看主播的直播:rtmp://play.rtctest.cn/12345/12345?auth_key=1577967820-0-0-f9a7e4a47feddbe7bc343cbfb559d552
- 連麥觀衆也加入RTC頻道12345
- 此時直播觀衆看到的畫面就是主播和連麥觀衆兩個人的直播内容了
注意事項
- 主播和連麥的觀衆必須加入同一個RTC頻道
- 同一個StreamURL(直播推流位址)無法在不同的旁路直播任務中同時使用
- 旁路直播任務停止10S之内,無法使用同一個StreamURL(直播推流位址)再開始新的任務