背景:今天给大家带来的分享主题是《媒体智能-淘宝直播流媒体互动实践》,内容分为5个部分,首先看看在淘宝直播的直播间里主播可以怎样给用户拜年;然后具体讲如何制作一个手势拜年的特效;接着介绍我们媒体智能整体的方案设计以及其中核心的工作之一,MediaAI Studio这样一款编辑器的实现;最后讲讲我们后续的建设方向。

目录

今天给大家带来的分享主题是《媒体智能-淘宝直播流媒体互动实践》,内容分为5个部分,首先看看在淘宝直播的直播间里主播可以怎样给用户拜年;然后具体讲如何制作一个手势拜年的特效;接着介绍我们媒体智能整体的方案设计以及其中核心的工作之一,MediaAI Studio这样一款编辑器的实现;最后讲讲我们后续的建设方向。

直播间里怎么拜年?

马上又要过年了,每次过年我们都会给亲朋好友拜年。那在直播间里,主播怎么给用户拜年呢?今年年初春节,我们做了一个项目,就是让主播可以在直播间里给自己的粉丝拜年,然后在直播间里出一些春节的氛围特效。

具体的设计方案就是主播在直播的过程中,实时识别主播的拜年手势,来触发一些春节氛围特效的渲染,同时实时识别主播的脸部,来跟随渲染一些人脸道具。


可以看到上面的几个效果示意,比如主播可以通过做一个爱心或者拜年的手势,来触发直播间的花字、对联或者礼花,也可以给主播的面部加上财神帽等人脸道具,增强直播间里的节日氛围。

制作手势拜年特效

那么要在直播的过程中做到这些效果,需要怎么来制作呢。接下来就详细介绍如何在直播间里制作这样一个手势拜年的特效。


大体上分为4个步骤,第一步是设计师通过一些设计软件制作好静态或动态的素材,比如财神帽及相关的微动效,交付物可以是一个序列帧动画;第二步是设计师在我们自研的MAI编辑器里制作完整的素材包,在这个编辑器里可以做画幅的适配、人脸识别跟随、设置手势触发条件,实时的本地效果预览等;编辑好素材之后打包上传到内容素材平台;最后是前台的使用,也就是我们的主播在推流端选择开启一些素材玩法包,然后推流的过程中实时识别和渲染合流,分发给用户端观看。

比如在编辑器里设置识别一个手势,来触发特定的特效,大概的操作流程是这样的:首先添加一个素材贴纸,上传替换素材图片,可以是一个序列帧,然后调整贴纸的位置和大小,播放效果里选择触发条件,通过拜年手势触发。怎么看效果呢?在右侧的预览效果里选择我们预制好的视频,就可以看到通过拜年手势触发了一个花字特效:


再比如我们想给主播戴一个财神帽,大概的操作流程是这样的:首先还是添加素材贴纸,选择财神帽的序列帧动画,调整大小和位置,在跟随位置里选择跟随人脸的前额部位。预览效果,选择我们预制好的视频,可以看到主播在点头的时候,财神帽也会跟着移动,这样就像是给主播戴上了帽子:


素材制作好之后,后面就是上传、分发、使用,我们可以看看在直播间里最终的实际效果:

媒体智能方案设计

前面我们介绍了一个单点的case,那我们定义的媒体智能流媒体玩法到底是什么,接下来我们具体介绍下媒体智能整体的方案设计。我们再来看一个case:



直播间里传统的红包雨互动,是在视频流上盖了一层普通的H5页面,和流内容是割裂的;我们想做的媒体智能流媒体互动,是在视频流中渲染素材,并且主播可以通过手势来控制红包雨的发放,将直播内容和互动深度结合,提升直播的互动率和停留时长。

我们定义的媒体智能,就是在直播和视频流上,结合AI/AR玩法,形成新型的流媒体互动。作为前端,我们的目标是构建从生产到消费的媒体智能方案,同时形成工程化链路,将流媒体互动的生产周期提效至「7+3+1」的模式,即7天算法开发、3天玩法编写、1天素材制作就可以上线一个全新的玩法。比如今年双11花「7+3+1」开发一个全新的玩法,在明年的日常,我们只需要1天制作新素材,或者花3天改一下玩法逻辑,就能变种出一个新的玩法。


接下来我们对方案进行了链路拆解,包括4个步骤,玩法生产、玩法管理、玩法使用和玩法展示。


生产者通过编辑器来生产玩法,通过素材平台来管理素材包,打通ALive平台做组件管理,主播通过多媒体生产端来使用玩法,在中控台做玩法配置和开启,在推流端做玩法执行和合流输出,同时通过SEI关键帧传输素材的位置、热区等信息,在直播间里通过直播容器来监听SEI和互动响应。

媒体智能的方案设计分为两个方面,智能素材和互动玩法。智能素材是面向产品、运营和设计师的,提供一站式的智能素材制作平台,互动玩法是面向开发者的,提供一个支持代码编写、调试、预览、部署的流媒体互动IDE。


什么是智能素材,比如钉钉的Real如我,通过MediaAI Studio生产了大量的智能素材,给用户拍摄场景提供了很多人脸道具;今年春节我们也生产了一些春节氛围应用在直播场景,比如直播间顶部和底部的这些春节氛围动效,以及通过识别主播的拜年手势来触发的特效。


智能素材的技术方案其实比较简单,核心是约定了一套JSON协议的模块配置,底层依托人脸检测、手势检测、物体识别等算法能力,在配置层抽象出模块,包括滤镜、贴纸、美颜美型、文字模板等,每个模块会做一些配置,包括样式、播放效果、动画等等,最后在终端上进行素材下载,完成配置解析,底层的渲染计算引擎根据配置做渲染计算,最后合流输出。

下面是我们定义的模块JSON配置的案例,可以看到里面有编辑器版本、画幅、模块类型配置,以及素材的资源、位置大小信息、播放设置、触发设置、动画设置等。


什么是互动玩法,比如今年双11在淘宝直播里的一些案例,左边是小米超大杯挑战赛,可以看到主播通过身体来控制超大杯的移动,来接收屏幕上方掉落的道具,右边是泡泡玛特的出道挑战赛,可以看到主播通过脸部来控制小人的运动,经过一些碰撞检测可以获得道具积分,来完成一些游戏逻辑。

要在直播过程中实现这样一套流媒体互动玩法,大致的技术方案是这样的。结合前面提到的红包雨的case,我们做一下链路串联。首先通过MediaAI

Studio这样一款编辑器来生成玩法素材和脚本,然后在ALive里新建一个红包雨组件并绑定玩法,主播通过中控台开启玩法,推流端下载、执行玩法脚本,把红包素材合在流里,用户播放端通过流里的SEI关键帧信息获取红包的位置,在ALive组件里消费这次互动,通过绘制热区响应用户操作。

编辑器 MediaAI Studio

前面多次提到了玩法编辑器,在媒体智能的链路里我们的核心工作之一就是要构建一个玩法生产的编辑器。


基于Electron我们打造了MediaAI Studio这样一个玩法生产的编辑器,底层依赖客户端的跨平台渲染计算引擎RACE,RACE集成了算法推理框架MNN和算法平台PixelAI,提供了基础的算法识别、渲染计算的能力。

Electron的主进程负责窗口管理、升级服务等,渲染进程里负责模块树等一些工具和编辑面板,以及实时渲染。同时渲染进程里开了一个worker线程,负责和RACE的node模块通信及一些图像处理。功能层面提供了工程管理、素材制作、玩法开发、账户管理等功能。

我们把RACE的c模块封装成一个.node的c扩展,通过N-API的方式做一些画幅解析、背景设置、渲染输出等功能,通过JSBinding调用c++模块实现js脚本能力。渲染部分会涉及大量的画布像素交换和输出,在渲染层抽象了worker层,包括背景更新、画幅更新、模块更新、Buffer更新等。worker和render之间是通过一些JSON协议和二进制的数据协议进行通信,来实现实时渲染的能力。


这是我们实现的编辑器效果,

从设计师视角可以生产智能素材,这里用到了底部的固定贴纸、头上的人脸贴纸,和手势触发的贴纸:



以及开发者视角可以在编辑器里编写玩法脚本,这个case里是通过脸部识别来控制小鸟运动轨迹,来实现的一个智能互动:

后续建设

媒体智能我们也才刚开始探索,目前主要是工具视角,核心通过MediaAI
Studio这款PC桌面端工具提供智能素材和互动玩法的生产,后续会更多的和平台打通,包括和算法平台、素材平台、发布平台的打通,比如我们的互动玩法里js脚本也需要符合前端安全生产的规范,所以在编辑器里需要和发布平台打通完成项目创建、调试、CR、发布部署等能力。最后是基于工具和平台,提供设计师和ISV生态,甚至是商业化运作,快速扩充直播流媒体互动的体量、丰富玩法类型。

后记:D2直播QA

Q1: 前端在玩法特效这块承担了哪些工作(除素材编辑平台)

A1: 玩法链路主要分为4个环节:玩法生产、玩法管理、玩法使用、玩法展示。玩法生产的核心是MediaAI
Studio这款编辑器,前端基于Electron打造的PC客户端;玩法管理主要是ALive平台;玩法使用是主播推流工具,我们提供了PC和APP两个场景的工具,其中PC推流工具我们也启动了Electron项目,把推流能力和特效玩法两部分更深度结合;玩法展示主要是直播间和短视频里的互动组件,这块整体的开放技术方案也是前端主导的。所以在各个环节,前端都承担了一些工作,其中生产、使用、展示环节前端承担了比较核心的工作。

Q2: 特效检测频率如何选取?

A2:
推流本身的性能消耗比较大,包括音视频采集、编码、美颜滤镜等等,所以在玩法特效的算法检测部分,我们做了两层频率控制:一是整个玩法包的开启和关闭,只有当主播或助理明确开启某个玩法时,才会做相应的算法检测;二是不同的算法也有不同的检测设置,算法内部也分检测帧和跟随帧,来尽量减少玩法检测的性能开销。

Q3: 识别、合流分别在哪个端实现的? 流用的是什么技术和协议?

A3: 识别、合流目前都是在主播推流端实现的,包括PC和APP。流就是传统的直播技术和协议,推流rtmp、拉流hls和http-flv。

Q4: 直播有延迟,合流是否会增加延时?怎么保障推流画面和用户交互之间的数据延迟?

A4:
合流不会增加直播延时,如果算法执行太慢,一帧处理不完,会导致直播帧率变低,对于用户体感就是画面变卡。这里问的用户交互我理解是C端用户的交互,一般C端用户的交互和响应都是在C端完成的,目前没有碰到C端用户交互后还需要推流端实时响应的case。如果是答题这类对流画面和内容同步度要求很高的场景,我们会通过SEI+CDN的方案来保障画面和数据的同步。

Q5: 能推荐下手势监听的开源库吗?

A5: Google Research 开源的MediaPipe

https://github.com/google/mediapipe

Q6: 识别会不会显著增加前端包的大小?

A6: 不会,前端包的大小主要是素材资源和js脚本,算法模型和识别能力是在端侧的,不会打到前端的包里。

Q7: 编辑器里的算法部分具体是用什么实现的?TFjs吗?

A7: 不是TFjs,算法的能力是MNN推理框架和PIXAI算法平台的能力,跨平台渲染计算框架RACE集成的也是这部分的能力。

Q8: 红包雨中,红包位置是不是随机的吗?如何预定义热区呢?

A8: 是随机的,推流端脚本执行后将红包绘制的位置、大小、形变等信息通过SEI关键帧传到播放端,播放端经过SEI解析后,前端还原出相应的热区,来响应用户操作事件。

Q9: 游戏部分的代码执行效率如何保证?

A9: 目前游戏部分是将RACE
c++代码通过jsbinding的方式供js调用,游戏画面由客户端进行渲染,而且RACE底层会做JS调用优化机制,因此执行效率上接近原生。但是目前提供的api较少,随着业务复杂度越来越高,游戏的开发效率倒是成了瓶颈,接下来我们在考虑通过RACE

canvas提供的WebGL协议接口,适配淘内主流H5游戏引擎,借助H5游戏完善的互动能力和引擎生态,再结合多媒体互动特有api,进行流媒体互动开发,实现一次开发,多渲染引擎运行。

作者:林晚

原文链接

本文为阿里云原创内容,未经允许不得转载

媒体智能-淘宝直播流媒体互动实践 | D2 分享视频+文章的更多相关文章

  1. Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享

    Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享 支付宝十年账单上的数字有点吓人,但它统计的项目太多,只是想看看到底单纯在淘宝上支出了多少,于是写了段脚本,统计任意时间段淘宝订单的消费情况,看 ...

  2. 基于电商直播SDK快速实现一个淘宝直播APP【内附源码】

    现在各大互联网APP都标配电商直播带货了,没有直播带货开发经验都感觉自己跟不上技术的进步.今天快速基于Java实现一个安卓端电商直播APP,深入理解整个电商直播开发流程.我们最终实现效果如下: 按照惯 ...

  3. 推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】

    0.前言:召回排序流程策略算法简介 推荐可分为以下四个流程,分别是召回.粗排.精排以及重排: 召回是源头,在某种意义上决定着整个推荐的天花板: 粗排是初筛,一般不会上复杂模型: 精排是整个推荐环节的重 ...

  4. 淘宝App直播宝贝数据采集

    淘宝App直播宝贝数据采集   前段时间,有人问我关于淘宝app直播频道宝贝如何采集?我尝试了下可以获取的到,模拟器登录不了淘宝,这里有一个坑就是,模拟器有时候会跳到登录页面,登录不了淘宝: 一.用A ...

  5. 写一个类似淘宝的ios app需要用到哪些技术?

    写一个类似淘宝的ios app需要用到哪些技术? 让我想起了有人私信我,说不缺钱,做个类似知乎的东西,包括加运营,需要多少钱. 扯淡结束,正好最近看了一点这方面的东西,也许对题主来说有点帮助. 手机淘 ...

  6. 关于手机淘宝3.25bug我的一些思考与建议

    这两天被手淘ios版3.25bug刷屏了,影响还是挺大的,仅3.25日当天截止到下午5点在微博上的话题阅读量,已经突破8000万.给广大网友带来一次吃瓜盛宴.我们先简单回顾下这个bug的故事线: 我查 ...

  7. 让淘宝链接在微信中分享,GO

    老婆开了个淘宝店,小卖家的心理大家都知道,一开始的小店总是没有光顾,吸引流量成了重中之中. 所以她到处发链接,微信里发了好多条,可是没过多久有好友微她,问她发的时什么,为什么都是打不开的.结果直接傻眼 ...

  8. facebook海量图片存储系统与淘宝TFS系统比较

    本篇论文的原文可谓通俗易懂.行云流水.结构清晰.图文并茂……正如作者所说的——"替换Facebook的图片存储系统就像高速公路上给汽车换轮子,我们无法去追求完美的设计……我们花费了很多的注意 ...

  9. Java系的大网站架构-LinkedIn和淘宝

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  10. no.2淘宝架构背后——零售业务中台架构设计探讨及实践读后感

    2017年8月12日,袋鼠云首席架构师正风在“网易博学实践日:大数据与人工智能技术大会”进行<淘宝架构演进背后——零售业务中台架构设计探讨及实践>演讲分享.传统零售行业如何选择应对新经济模 ...

随机推荐

  1. .NET Core使用 CancellationToken 取消API请求

    您是否曾经访问过一个网站,它需要很长时间加载,最终你敲击 F5 重新加载页面. 即使用户刷新了浏览器取消了原始请求,而对于服务器来说,API也不会知道它正在计算的值将在结束时被丢弃,刷新五次,服务器将 ...

  2. 3DCAT亮相WAIC 2022浦东分会场——元宇宙博览会暨数字光影大会

    以"智联世界 元生无界"为主题的2022世界人工智能大会于9月3日下午圆满闭幕.与此同时,由上海市多媒体行业协会.深圳市数字创意与多媒体行业协会主办,上海天盛会展有限公司承办的WA ...

  3. 喜讯!瑞云科技被授予“海上扬帆”5G融合应用专委会成员单位

    2022年7月19日,5G应用"海上扬帆"行动计划云启航大会暨"海上扬帆"融合应用专委会成立大会在沪成功举办. 受上海信通院工创中心邀请和信任,深圳市瑞云科技有 ...

  4. 记录--通过手写,分析axios核心原理

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.axios简介 axios是什么? Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. ...

  5. 记一次 .NET某游戏后端API服务 CPU爆高分析

    一:背景 1. 讲故事 前几天有位朋友找到我,说他们的API服务程序跑着跑着CPU满了降不下去,让我帮忙看下怎么回事,现在貌似民间只有我一个人专注dump分析,还是申明一下我dump分析是免费的,如果 ...

  6. KingbaseES 支持自定义异常

    KingbaseES PLSQL 从 V8R6C4 版本开始,支持用户自定义异常.具体例子如下: create or replace procedure p_test() as error_numbe ...

  7. .net跨平台运行实践

    一个偶然的机会,一个朋友想做一个程序,同时支持windows和linux,本来想用go来写,奈何不太熟练,突然想到.net不是也支持跨平台了吗,还没有操作过,刚好可以试验一下. 最新的.net 6已经 ...

  8. 15 CSS总结

    15 CSS总结 到此,css的知识就结束了,掌握这些知识,搞爬虫足够了.如果朋友还有兴趣可以去css其他学习网站去看看其他的一些属性用法,(菜鸟教程 https://www.runoob.com/c ...

  9. #贪心,树#C 平衡的树

    分析 处理出子树内剩余删减以及最大的剩余\(a\)和, 如果删了还是超过\(b\)输出无解 代码 #include <cstdio> #include <cctype> #de ...

  10. java中的类型擦除type erasure

    目录 简介 举个例子 原因 解决办法 总结 简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型,从而提升了程序的健壮度. 泛型可以用在类和接口上 ...