|
|
51CTO旗下网站
|
|
移步端
  • 阿里工程师开发弹幕新玩法,戏友不淡定了……

    如果你在追剧时喜欢看弹幕、发弹幕,那你一贯知道有些剧里弹幕甚至比剧情还要精彩,比如上过热搜的出自《清宫》的那一句“谈恋爱吗?灭你全族的某种”。正是出于这些神一般的戏友频频曝出精句,让某些剧集精彩程度翻了几倍,甚至有恢宏网友来追剧是把弹幕吸引来之。当日,阿里文娱高级开发工程师 神灭介绍一种弹幕新玩法,让弹幕的可玩性更高。

    笔者:阿里技术 来源:阿里技术| 2020-02-12 14:13

    阿里妹导读:如果你在追剧时喜欢看弹幕、发弹幕,那你一贯知道有些剧里弹幕甚至比剧情还要精彩,比如上过热搜的出自《清宫》的那一句“谈恋爱吗?灭你全族的某种”。正是出于这些神一般的戏友频频曝出精句,让某些剧集精彩程度翻了几倍,甚至有恢宏网友来追剧是把弹幕吸引来之。当日,阿里文娱高级开发工程师 神灭介绍一种弹幕新玩法,让弹幕的可玩性更高。

    喜爱用优酷看视频发弹幕的同窗应该已经意识,新型版本上许多剧都上点了崭新的基于AI面识别的跟随弹幕,旧时的一般弹幕或高级弹幕都是在播放器顶端自右向左以跑马灯式的功力展示,而这种跟随弹幕是以气泡样式挂在人物头像旁边,随着人物移动而移动。这种跟随弹幕可玩性更高,有才网友可发挥余地更大,下就列举几个比喻。

    重组人物动作的玩法:

    重组人物所处场景的玩法:

    自编自导人物对话:

    副几个视频demo官方得以看到,相比之下普通弹幕,这种跟随弹幕是以一种类似剧中人物之心扉OS的措施展示出来的,与视频无割离感,更有意思更新颖更精花,有更多玩法。

    本文主要讲诉一下跟随弹幕是如何展示的,副构架图开始讲解实现流程;再由开发过程中遇到的老大难问题,分享技术政策;说到底分享未来规划。

    一、紧跟弹幕架构图

     

    任何流程自下而上,人均算法侧、劳务端、客户端三层:

    第一,书法侧按每秒25帧的效率进行视频抽帧,对每一帧进行人脸识别,配合人脸跟踪和坦荡处理,浮动每一帧的脸元数据;

    从,劳务端将多个帧的脸元数据通过降噪、防抖、统一后组成成一组组的脸组数据,名将该数据与跟随弹幕数据一起下发给客户端;

    说到底,客户端在互动SDK中将每组人脸数据生成一个脚本,剧本中成功弹幕跟随该人脸轨迹的运动而移动。

    下着重介绍下每个模块或子模块完成的天职:

    1.书法侧

    1) 视频抽帧模块:名将视频流按每秒25帧(可安排)的效率抽帧。抽帧频率越高,面移动轨迹越平滑,但背后人脸识别算法耗时也随之增加;

    2) 模型训练模块:提供多张多角度剧中出现的人士图像,送模型训练模块来训练,浮动对应人脸库,再配合已训练成功的明星库,这两个库可以大大增强人脸检测的灵敏度;

    3) 面检测:辨认每一帧图像中的人脸,并送出坐标;

    4) 面跟踪:为方便服务端生成人脸的运动轨迹,要求把连续几帧中的相同人脸标记出来;

    5) 平滑处理:出于每帧中识别出的脸坐标有稳定的偏移量,故此整段人脸轨迹中会出现抖动现象,平滑处理就是通过微调每帧人脸坐标让所有人脸移动轨迹更平滑。

    2.劳务端

    1) 降噪:书法侧不关心每一帧上到底哪张脸重要或不重要,故此会有恢宏之路途人脸是出现一秒不到就消失的,这种形式化意义之噪点要求直接过滤掉,即降噪处理;

    2) 防抖:如果算法侧平滑处理未到达要求,面在活动过程中还是有抖动,劳务端可以对元数据进行二次加工,让面部移动更平滑;

    3) 统一:书法侧吐出的都是每一帧的元数据,但客户端关心的是一张脸由出现到消失的总体轨迹过程,劳务端会把元数据合并成一组组人脸的线路数据,即人脸组数据;

    4) 气泡弹幕数据:紧跟弹幕的多寡,每条弹幕都对应着一张脸,也指定了弹幕开始展示的时该。

    3.客户端

    1) 互动SDK模块:加载各种互动脚本,每个脚本都是一番小的互动,比如电影评分、圆满tips、双流酷看等。采取了互动SDK的根基能力,此地把每张人脸由出现到消失的总体过程当做一个小的互动脚本;

    2) 面脚本:面脚本中包含着该张脸的线路坐标和对应当张脸的球幕气泡数据,剧本中有个定时器在轮询,追寻着脚下时刻对应人脸的坐标,如果该时刻有跟随弹幕数据则把该数据展示在人脸旁边,继承轮询即赶到了弹幕气泡跟随人脸移动的功力。

    二、为什么不通过客户端直接识别人脸?

    1. 实时观看对于时间要求太高

    对于客户端来说,末了需要了解的是一张张脸由出现到消失整个轨迹过程,如果客户端做识别,脚下只能识别到某一帧中人脸数据,追踪、平滑处理、防抖、过滤、统一,这一切过程下来耗时太大,重点无法满足用户实时观看的急需;

    2. 头侧识别准确度达不到要求

    前面做弹幕穿人时,iOS头接入过AliNN提供的SDK,面检测还是偶而出现未检测到的状况,如果人脸检测准确度上不能达到要求,必须协调做补帧处理,其一补帧处理很难做到实时;

    3. 头侧识别影响用户体验

    头侧识别时手机cup消耗增大,即耗电量会增大,同时可能也影响到播放器卡顿率。

    三、困难的题材

    1.在即将切镜头时发跟随弹幕,如何停留的题材

    他家发弹幕的时候恰好在人脸马上消失的时候(比如马上要切镜头),这会儿由于人脸会马上消失,而其他人脸会马上出来,题材来了,如果为了保证用户能收看自己发的球幕,那这条跟随弹幕就要求强制在荧屏上停留几秒,但就因为这几分钟导致切镜头后这条跟随弹幕很尴尬。高考同学反馈说弹幕在切镜头后很奇怪,送人一种“天上飘来一句话”的感觉。

    对这个题目,末了我们的消灭办法是切镜头前一刻发的跟随弹幕,在切镜头后直接跑渐隐效果,这样即保证了他家能看清自己之球幕又保证不会尴尬境地挂在从一个画面之脸上。视频效果如下:

     

     2.大剧热综频繁剪辑导致人脸数据时间轴错乱的题材

    一度视频特别是综艺上点后,会时不时地多次剪辑。一旦剪辑后,面数据和速度条时间会错位,营业同学可能会给出一番大概时间比如在一分二十秒位置剪掉十秒这样的多寡,但人脸数据必须与进度条时间在毫秒级单位上回答,否则会出现明显延迟或提前。如果重跑数据,可能需要几个小时下线掉该功能,如果要复用数据就不能不掌握精确的毫秒值,下一场剪切部分之下的脸及弹幕数据全部做偏移处理,故此问题就是如何获取精确的分割时长。

    按照如下方式,只要求跑新视频剪切点前后一小段人脸数据,即可计算出剪切的毫秒级时间,下一场将原视频中在剪切点后的脸数据及弹幕数据全部偏移对应时间即解决了多少错位问题。

     

     四、前途展望

    剧中的脸数据如果只利用在跟随弹幕中就大材小用了,从一地我们准备把带有人脸数据和身体数据的剧本做为核心脚本,后面除了跟随弹幕脚本,还会有弹幕穿人脚本等等。持续客户端这部分架构可能会调整,见下图。富有大家通过外部注入等艺术,构建自己想要的剧本。 

    故此当你有了创新点子,也要求采取到面人体数据时,可以持续自基本脚本拿到数据后直接定制自己想要的效应,凭借成熟的僵化过的脸人体数据,很快地做到demo。

    比如YY一度场景,出于一些原因,要求送明星A所出现的画面打上马赛克,或从掉明星A参展的影视。从掉电影肯定不能接受,毕竟花了大价钱买版权;靠人工对大气画面重新剪辑又不现实,这就到了考验各视频APP艺术力量的时节了。咱们借助互动SDK提供的力量,穿过已经下发的脸ID认清出是出名A时送下发的脸框打上马赛克,题材就解决了。

    【编纂推荐】

    1. 为什么整个互联网行业都缺前端工程师?
    2. 写给前端工程师的Flutter详细教程
    3. 真工程师:20块钱做了张「名片」,可以跑Linux和Python
    4. 必发娱乐手机版这些美国商厦为软件工程师开出的工资最高
    5. 老铁,东北话编程了解一下不?谷歌工程师新作!
    【义务编辑: 武晓燕 TEL:(010)68476606】

    点赞 0
  • 工程师  球幕  新玩法
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    Kubernetes:21远处完美通关

    Kubernetes:21远处完美通关

    从小白到修神
    共29章 | king584911644

    153人口订阅学习

    Python使用场景实战手册

    Python使用场景实战手册

    Python使用场景实战手册
    共3章 | KaliArch

    122人口订阅学习

    一步到位玩儿透Ansible

    一步到位玩儿透Ansible

    Ansible
    共17章 | 骏马金龙1

    209人口订阅学习

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微

    
       
       
       
      1.