随着娱乐直播行业的发展,平台玩法越来越多。其中秀场连麦直播玩法人气较高,一方面改变了主播与观众对立的体验,另一方面拉近了主播与观众的距离,对于拉动主播收入平台营收起到了十分重要的作用。在此衍生出来的如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(直播推流地址)再开始新的任务