最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

从业务应用挑战出发,火山引擎专家深度拆解“弹幕互动方案”的全新实践

  • 2023-12-08
    北京
  • 本文字数:3438 字

    阅读完需:约 11 分钟

从业务应用挑战出发,火山引擎专家深度拆解“弹幕互动方案”的全新实践

从互联网到全行业视频化时代,营销、商品、知识与空间的体验正在被重塑和创新,火山引擎视频云以“面向体验,驱动创新”为核心,特别与 NVIDIA 团队合作推出《云上新视界》线上课程。第五期课程中,火山引擎 RTC 商业化解决方案团队负责人郭健为大家分享了当前热门玩法“弹幕互动”的解决方案与应用实践。

一、什么是“弹幕互动玩法”?


弹幕互动玩法是依托直播间(直播连麦、语聊房等互娱核心场景),观众可以通过弹幕、送礼物等互动操作,控制直播画面中的互动内容的一种直播方式,具备即开即玩、多人互动等特性,兼具观众互动性强、直播内容游戏化趣味化等特点。


从 2014 年的《Plays Pokémon》到 2021 年尾《修勾夜店》爆火,弹幕互动几经翻红。今年开始,弹幕互动受到各大平台的广泛关注,从玩法上线后效果看弹幕互动玩法的户观看人数 / 时长、营收等核心指标都有很好的收益。

二、弹幕互动方案的 3 个核心演进阶段


弹幕互动经历了 PC 端开播、云游戏方案、云游戏 + RTC 方案三个阶段。


第一个阶段,PC 端开播。传统开播流程需要主播先在 PC 端安装程序和开播工具,互动玩法在主播 PC 上运行和渲染。同时,主播使用 PC 端直播工具(比如 OBS)对本地画面和主播直播画面混流,再推送到直播间。观众进入直播间发送弹幕或者发送礼物参与互动。



这种方式存在一定局限性,比如:


  • 弹幕互动内容本身需要实时计算渲染,对设备硬件配置如显卡计算能力有较高要求,甚至堪比 3A 大作性能要求,开播设备性能不足,就会导致弹幕无效甚至内容本身卡死,影响直播间用户体验;

  • 越来越多的主播更习惯在移动端随时开播,而只能运行在 PC 端的弹幕互动程序,会大大增加开播门槛,也降低平台玩法覆盖度;

  • 移动端开播还可以与平台其他玩法相结合,但如果单独为弹幕玩法准备 PC 端 OBS 开播,既增加了维护成本,也难以进行推广。


第二阶段,在直播 / 语聊的基础上引入云游戏。主播进入连麦房间推拉 RTC 流的同时,也需要进入云游戏的房间拉取互动玩法音视频。然后业务层把 H5 引擎拉取到的视频流和业务层采集到的摄像头流在端上合流后,推入直播房间。



这个方案解决了开播平台限制和开播设备的限制,但是有一些方案接入和体验问题。从方案层面看,业务逻辑复杂接入相对麻烦。从体验看,存在嘉宾 / 观众侧主播解说和互动画面会有轻微的不同步、画面延时大、有回声等问题。其中,RTC 引擎订阅云游戏音频观众侧有回声主要是因为游戏流的声音或者麦克风会采集到本地播放的游戏声音。


为了解决上个方案的几个问题,火山引擎视频云首推“云游戏 +RTC 方案”方案,而弹幕互动方案也正式进入了第三阶段——火山引擎 RTC 与云游戏产品在服务侧和引擎侧做了深度协同优化。在服务侧,优化了调度方案,保证用户连接的云游戏 pod+RTC 媒体服务器在同一个机房、云游戏音视频流可直接送入 RTC 房间。在引擎侧,云游戏引擎直接依赖宿主侧的火山 RTC 引擎、云游戏引擎裁剪场景无关功能。


在具体操作中,首先主播通过云游戏引擎开启互动完成程序,云游戏启动 pod 并创建火山 RTC 房间。完成后,Pod 集成云游戏引擎和 RTC 引擎向火山云游戏房间推音视频流,火山云游戏房间跨房转推音视频流到两个直播 / 语聊房间,嘉宾和观众通过 RTC 直接拉取直播流和云游戏流即可。



云游戏和 RTC 内部深度协作,缩短数据流转链路在接入直播 / 语聊的基础上,仅需接入 veGameSDK 启动游戏、业务端通过 OpenAPI 同步弹幕 / 礼物数据到云游戏服务器两步即可完成场景“升级”,大大简化业务逻辑,缩短接入周期减少工作量。

三、火山引擎是怎么解决历史方案问题的?


此前弹幕互动方案所存在的观众弹幕互动延时、主播外放有回声等体验问题,火山引擎方案是如何解决的?

 1. 弹幕互动延时问题


未优化的云游戏方案观众端发送弹幕后,由于传统 RTMP 直播流延迟较大,观看云游戏观众侧会有 3~5 秒延时,并且都会有轻微的互动画面与解说的不同步,体验较差。这些在普通常见的场景可能影响不大,但是在对战场景,战场形势瞬息万变,可能最后一秒的延时失去被“偷家”导致战斗失败。


优化后,使用全 RTC 方案,可以让用户参与玩法整体延时<400ms 。

 2. 外放回声消除


在未优化方案中,云游戏的声音在经过扬声器播放后,会被近端用户的麦克风采集到并产生回声问题,需要参考扬声器播放的声音进行回声消除技术处理,云游戏和 RTC 独立运行,云游戏音频无法给到 RTC 引擎,所以容易产生回声。


在优化方案中,云游戏音频可以直接跨房转推到 RTC 房间,场景内音频播放通过音频托管的方式统一由 RTC 进行音频播放,有参考信号,可以彻底消除回声,以确保对端收到清晰的声音。



四、弹幕互动方案在业务应用中的挑战与实践

 1. 卡顿优化


弹幕互动场景有一个特点就是画面极致高清,一般是高清 1080P、 帧率 30fps、高码率 8Mbps。同时,主播、观众均为移动端设备,随时开播与参与,用户网络环境复杂且不稳定。在这种高分辨率高码率、且网络不稳定情况下极其容易造成卡顿劣化。


要优化这种情况,首先把线上 H264 升级为自研 ByteVC1 编解码,在 PSNR(视频质量客户评价)画质质量优于原方案 2dB 时,还能节约 10% 码率。此时对于线上情况码率可能仍较大,火山引擎 RTC 采用智能流控协议 (VISC),它基于 Simulcast 和 SVC 策略优化而来、更加智能的一种传输协议,它可以综合考虑音视频通话中每个订阅者的个性化需求,在网络情况、终端性能发生变化的时候,自动调整音视频流的配置,最大限度地让每个参与者的个性化需求得到满足,为用户提供更流畅的互动体验。


 2. 操作延时优化


云游戏在所有的云计算相关应用中,对延时要求最为苛刻,火山引擎 RTC 针对云游戏与 RTC 场景相结合的应用场景,进行全链路延时优化。


  • 阶段一,边缘机房阶段。保证用户连接的云游戏 Pod 和 RTC 服务器调度到同一个机房,使用更高效传输方式优化,首帧时长减少约 30ms;降低延时 50ms;编码前优化采集和格式转换,使用 OpenGL 转换替换 libyuv 转换,优化延迟 15ms;

  • 阶段二,级联服务优化。减少级联服务器和优化信令传输,优化 20ms;

  • 阶段三,订阅端。针对云游戏下行音视频调整 jitterbuffer 大小,降低延时 60~260ms,有优化的处理,可以不影响直播 / 语聊体验;针对不同的硬件解码器做优化,最多优化延迟 90ms;内部渲染替代外部渲染降低延迟 5ms,整体云游戏到端延时可以达到小于 75ms。

 3. 性能优化


弹幕互动玩法可以在个人直播、直播连麦或者跨房 PK 中等场景中加入。在语聊房跨房 PK+ 弹幕互动玩法场景中,假设每个语聊房会有 9 人,两个房间 PK 时,单个用户最多需要拉 18 路音频流和云游戏音视频流,性能压力大,玩法准入机型门槛高,设备发热严重。


因此,为减少对手机性能消耗,火山引擎 RTC 使用 RTC 公共流不进房拉流方案。这个方案中,本房间内拉流方式不变,PK 房间的音频流合流后推一路公共流,对比普通语聊模式单个用户只多拉一路音频流和一路云游戏流。两个房间 PK,每个房间 1 位主播、8 位嘉宾、100 位观众流数评估,单房间减少(1+8+100)*8 约 872 路、单用户减少 8 路流,有效优化用户拉流性能,减少 50% 流数量。



独立集成云游戏 SDK 包体增量一般 9M 左右,9M 的包增量对客户来说是不可接受的。弹幕互动方案中云游戏直接复用火山引擎 RTCSDK 传输能力,云游戏 SDK 精简包只需操控信令和选路部分,精简包给整体带来增量仅 610KB。

五、写在最后


总体来说,火山引擎弹幕互动方案有五大优势:


  • 不限设备、不限场景,零门槛开播:无论是个播还是多人互动,移动端即可随时随地“云开启”弹幕互动玩法,无需高性能 PC,消除互动内容本身对用户终端算力的限制;

  • 热门弹幕互动内容全适配:云游戏支持直接部署基于 UE/Unity 框架的互动内容,底层多种类型 IaaS 和对应 GPU 配置,满足不同等级算力要求的弹幕互动玩法;

  • 无惧弹幕高并发,渲染画面高清流畅:云游戏支持 ARM、x86 以及定制化 GPU 等多样化计算资源,并采用自研 ByteVC1 编解码结合动态码率技术,保证互动画面流畅体验同时节约带宽消耗,互动画面 100ms 卡顿率低于 2%;

  • 主播解说与玩法进程实时同步:通过火山引擎 RTC 媒体节点和 云游戏 Pod 端同机房调度,超低延时体验,操作延时小于 90ms,主播讲解和内容画面实时同步,保障观众沉浸互动体验;

  • 应用最小包增量引入:弹幕互动方案中云游戏可直接复用火山引擎 RTC SDK 传输能力,云游戏 SDK 精简包只需操控信令和选路部分,精简包增量仅 KB 级。


而本期课程中介绍的弹幕互动玩法的解决方案技术实践只是“小试牛刀”,如果想要了解更多,可以扫描下方二维码,有更加详细的弹幕互动解决方案和获取弹幕互动 Demo!



公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-12-08 12:154750
用户头像
鲁冬雪 InfoQ 策划主编

发布了 337 篇内容, 共 195.7 次阅读, 收获喜欢 270 次。

关注

评论

发布
暂无评论
发现更多内容

Go 语言快速入门指南:Go 模板介绍

宇宙之一粟

Go 语言 2月月更

外包学生管理系统架构设计文档

风中奇缘

架构实战课 「架构实战营」

IntelliJ IDEA 在校验 PHP Debug 配置的时候提示 URL 无法访问

HoneyMoose

Linux 示例中的 apt 命令大全,建议收藏!

Ethereal

你才二十几岁呀,怎么眼里没有光了呢?

架构精进之路

随笔 日常感悟 2月日更

java面试jvm调优的意义_java培训

@零度

JVM JAVA开发

一句话告诉您什么是运维?以及如何运维才能事半功倍?

行云管家

运维 IT运维 自动化运维

学生管理系统详细架构设计文档

晨亮

「架构实战营」

RocketMQ-Streams 首个版本发布,轻量级计算的新选择

阿里巴巴云原生

重新理解“无容灾不上云”:应用多活将成为云原生容灾新趋势

阿里巴巴云原生

阿里云 开源 云原生

Linux系统数据备份不再头疼,Rdiff-backup来帮忙!

Ethereal

如果写作平台不叫写作平台,他应该叫……?

InfoQ写作社区官方

写作平台 创意 话题讨论 热门活动

IntelliJ IDEA 在校验 PHP Debug 配置的时候提示 Xdebug 扩展没有载入

HoneyMoose

外包学生管理系统架构设计文档

五月雨

架构实战营 「架构实战营」

数据平台与Flink任务运行原理介绍

云智慧AIOps社区

redis 云计算 大数据 kafka Flink 平台

尚硅谷MyBatis新版视频教程发布

@零度

Java mybatis

绿色数据中心“东数西算”全面启动!八大枢纽十大集群 - 涉及高性能计算,数据集群,水冷散热

蓝海大脑GPU

如何在Linux解压缩(打开)Gz 文件?

Ethereal

IntelliJ IDEA Ultimate 配置 PHP 拦截器

HoneyMoose

前后端分离项目,如何解决跨域问题?

沉默王二

Java 前端 后端 跨域

安全领域权限模型

alibeer

架构学习【03】——外包学生管理系统的架构文档

tiger

架构实战营

基于CC2530设计的自动晾衣杆

DS小龙哥

2月月更

如何在 Vue 中导出数据至 Excel 表格 - 卡拉云

蒋川

Vue Vue 3 vue admin

阿里巴巴的Java开发手册(黄山版)来了

翊君

Java 阿里巴巴面经总结

灵雀云加入,龙蜥社区迎来国内领先的企业级PaaS服务商

OpenAnolis小助手

Linux 开源 云原生 PaaS

uni-app技术分享| uni-app常见问题(一)

anyRTC开发者

uni-app 音视频 WebRTC 移动开发 实时通讯

Linux基础操作:如何在 Linux 中复制文件夹?

Ethereal

Logo小变动,心境大不同,SVG矢量动画格式网站Logo图片制作与实践教程(Python3)

刘悦的技术博客

前端 动画 SVG Python3 svg图

IntelliJ IDEA Ultimate 配置 PHP 拦截器中 Xdebug 扩展应该怎么填

HoneyMoose

web前端开发nodejs基本原理_前端培训

@零度

node.js 前端开发

从业务应用挑战出发,火山引擎专家深度拆解“弹幕互动方案”的全新实践_云计算_鲁冬雪_InfoQ精选文章