娱乐社交行业连麦直播的实现方案

简介: 如何结合阿里云的音视频通信服务和直播服务实现连麦直播。

随着娱乐直播行业的发展,平台玩法越来越多。其中秀场连麦直播玩法人气较高,一方面改变了主播与观众对立的体验,另一方面拉近了主播与观众的距离,对于拉动主播收入平台营收起到了十分重要的作用。在此衍生出来的如PK,付费问答,语音连麦等玩法成为各大直播平台的标配。
本篇文章将介绍如何结合阿里云的音视频通信服务和直播服务实现连麦直播。

方案前提

  1. 已经开通了阿里云的直播服务并且配置了直播域名,可以完成基础的rtmp直播功能
  2. 已经开通了阿里云的音视频通信服务,可以完成多个用户的音视频通话

业务流程

下图所展示的基于音视频通信 RTC 和直播服务实现一次连麦直播的调用流程,其中灰色部分为您的自建开发程序或AppServer服务,橙色是阿里云的音视频通信 RTC 和直播服务。

image.png

  1. 主播调用RTC接口加入频道
  2. AppServer调用旁路直播接口进行直播
  3. 观众调用RTC接口加入和主播同一个频道

使用步骤

如何进行主播、观众加入RTC频道,直播如何生成直播地址已经方案前提里已经说明了,本章节就不会说明这两个环节的实现方法。主要描述旁路直播相关功能的实现

  1. 主播加入RTC频道12345后,AppServer按照直播地址的生成方法生成一个直播地址,比如:rtmp://push.rtctest.cn/12345/12345?auth_key=1577967820-0-0-f9a7e4a47feddbe7bc343cbfb559d552
  2. 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
  1. 观看直播的观众通过直播的播流地址观看主播的直播:rtmp://play.rtctest.cn/12345/12345?auth_key=1577967820-0-0-f9a7e4a47feddbe7bc343cbfb559d552
    |center|250x200
  2. 连麦观众也加入RTC频道12345
  3. 此时直播观众看到的画面就是主播和连麦观众两个人的直播内容了
    |center|250x200

注意事项

  1. 主播和连麦的观众必须加入同一个RTC频道
  2. 同一个StreamURL(直播推流地址)无法在不同的旁路直播任务中同时使用
  3. 旁路直播任务停止10S之内,无法使用同一个StreamURL(直播推流地址)再开始新的任务
目录
相关文章
|
4月前
|
人工智能 安全 Java
掌握 Spring 中的 WebClient
本文介绍了 Spring Boot 开发中 WebClient 的使用场景及优势。WebClient 是非阻塞响应式 Web 客户端,适合高并发、流式数据处理和微服务通信。它支持事件驱动架构、大文件传输、超时重试机制,并可与 OAuth2 集成实现安全通信。相比 RestTemplate,WebClient 提供更高效的资源利用和灵活的并发处理能力,适用于现代响应式应用开发。文中通过代码示例详细对比了两者的区别,展示了 WebClient 在异步编程中的强大功能。
597 0
|
SQL Java 数据库连接
MyBatis 优秀的持久层框架(一)
MyBatis 优秀的持久层框架
351 0
|
SQL 存储 分布式计算
Hive数据仓库设计与优化策略:面试经验与必备知识点解析
本文深入探讨了Hive数据仓库设计原则(分区、分桶、存储格式选择)与优化策略(SQL优化、内置优化器、统计信息、配置参数调整),并分享了面试经验及常见问题,如Hive与RDBMS的区别、实际项目应用和与其他组件的集成。通过代码样例,帮助读者掌握Hive核心技术,为面试做好充分准备。
1217 0
|
Java Linux Windows
【Java】让控制台输出动起来
一、前言 有时候写的工具需要在控制台中输出日志等信息,尤其是运行在Linux系统下的工具,交互操作都只能在控制台中进行。看久了单调的信息输出后,总想来点不一样的。经过一番搜索和简单研究后写点东西记录一下。 让控制台的内容动起来其实相对简单,首先是清除控制台已输出的内容,其次根据动画的数据输出新的内容,然后重复上面的操作就可以得到动画效果。我也刚开始学习,写了一个简单类似柱状图的动态程序如下图。
1144 0
【Java】让控制台输出动起来
|
开发工具 git
SourceTree配置BeyondCompare代码冲突解决工具
SourceTree配置BeyondCompare代码冲突解决工具
1406 0
|
11月前
|
传感器 存储 监控
树莓派的应用场景有哪些
树莓派是一种小型、低成本的计算机,广泛应用于教育、家庭自动化、媒体中心、游戏、机器人、物联网项目等领域,支持多种操作系统和编程语言。
1949 8
|
Linux 开发者 iOS开发
Python中使用Colorama库输出彩色文本
Python中使用Colorama库输出彩色文本
|
11月前
|
存储 数据可视化 数据挖掘
免费低代码平台精选10款,哪款更实用
本文将为您盘点10款免费的低代码平台,包括Zoho Creator、OutSystems Community Edition、Baserow、Mendix等,详细介绍它们的特点,帮助您选择合适的工具。Zoho Creator以其灵活的工作流设计、实时共享数据、快速部署和移动端支持等优势,成为多家企业的首选。OutSystems Community Edition则提供强大的集成能力和组件市场,支持多种应用类型。Baserow开源且高度定制化,适合团队协作。Mendix免费版支持多种应用开发,提供丰富的学习资源。
722 0
|
机器学习/深度学习 PyTorch 算法框架/工具
SE 注意力模块 原理分析与代码实现
本文介绍SE注意力模块,它是在SENet中提出的,SENet是ImageNet 2017的冠军模型;SE模块常常被用于CV模型中,能较有效提取模型精度,所以给大家介绍一下它的原理,设计思路,代码实现,如何应用在模型中。
3991 0
|
人工智能 达摩院 自然语言处理
达摩院联合高德发布业界首个多模态地理文本预训练模型MGeo,并在ModelScope社区开源!
达摩院联合高德发布业界首个多模态地理文本预训练模型MGeo,并在ModelScope社区开源!