新聞中心
????阿里妹導(dǎo)讀:如果你在追劇時(shí)喜歡看彈幕、發(fā)彈幕,那你一定知道有些劇里彈幕甚至比劇情還要精彩,比如上過熱搜的出自《東宮》的那一句“談戀愛嗎?滅你全族的那種”。正是由于這些神一般的網(wǎng)友頻頻曝出精句,讓某些劇集精彩程度翻了幾倍,甚至有大量網(wǎng)友來追劇是被彈幕吸引來的。今天,阿里文娛高級(jí)開發(fā)工程師 神滅介紹一種彈幕新玩法,讓彈幕的可玩性更高。

喜歡用優(yōu)酷看視頻發(fā)彈幕的同學(xué)應(yīng)該已經(jīng)發(fā)現(xiàn),最新版本上很多劇都上線了全新的基于AI人臉識(shí)別的跟隨彈幕,以往的普通彈幕或高級(jí)彈幕都是在播放器頂端自右向左以跑馬燈式的效果展示,而這種跟隨彈幕是以氣泡樣式掛在人物頭像旁邊,隨著人物移動(dòng)而移動(dòng)。這種跟隨彈幕可玩性更高,有才網(wǎng)友可發(fā)揮余地更大,下面就列舉幾個(gè)例子。
結(jié)合人物動(dòng)作的玩法:
??
??
結(jié)合人物所處場景的玩法:
??
??
自編自導(dǎo)人物對(duì)話:
??
??
??
??
從幾個(gè)視頻demo中可以看出,相比普通彈幕,這種跟隨彈幕是以一種類似劇中人物的內(nèi)心OS的方式展示出來的,與視頻無割離感,更有趣更新穎更精彩,有更多玩法。
本文主要講訴一下跟隨彈幕是如何展示的,從構(gòu)架圖開始講解實(shí)現(xiàn)流程;再由開發(fā)過程中遇到的棘手問題,分享技術(shù)策略;最后分享未來規(guī)劃。
一、跟隨彈幕架構(gòu)圖
??
??
整個(gè)流程自下而上,分成算法側(cè)、服務(wù)端、客戶端三層:
首先,算法側(cè)按每秒25幀的頻率進(jìn)行視頻抽幀,對(duì)每一幀進(jìn)行人臉識(shí)別,配合人臉跟蹤和平滑處理,生成每一幀的人臉元數(shù)據(jù);
其次,服務(wù)端將多個(gè)幀的人臉元數(shù)據(jù)通過降噪、防抖、合并后組合成一組組的人臉組數(shù)據(jù),將該數(shù)據(jù)與跟隨彈幕數(shù)據(jù)一起下發(fā)給客戶端;
最后,客戶端在互動(dòng)SDK中將每組人臉數(shù)據(jù)生成一個(gè)腳本,腳本中完成彈幕跟隨該人臉軌跡的移動(dòng)而移動(dòng)。
下面著重介紹下每個(gè)模塊或子模塊完成的任務(wù):
1.算法側(cè)
1) 視頻抽幀模塊:將視頻流按每秒25幀(可配置)的頻率抽幀。抽幀頻率越高,人臉移動(dòng)軌跡越平滑,但后面人臉識(shí)別算法耗時(shí)也隨之增加;
2) 模型訓(xùn)練模塊:提供多張多角度劇中出現(xiàn)的人物圖像,給模型訓(xùn)練模塊來訓(xùn)練,生成對(duì)應(yīng)人臉庫,再配合已訓(xùn)練完成的明星庫,這兩個(gè)庫可以大大提高人臉檢測的準(zhǔn)確度;
3) 人臉檢測:識(shí)別每一幀圖像中的人臉,并給出坐標(biāo);
4) 人臉跟蹤:為方便服務(wù)端生成人臉的運(yùn)動(dòng)軌跡,需要把連續(xù)幾幀中的相同人臉標(biāo)記出來;
5) 平滑處理:由于每幀中識(shí)別出的人臉坐標(biāo)有一定的偏移量,所以整段人臉軌跡中會(huì)出現(xiàn)抖動(dòng)現(xiàn)象,平滑處理就是通過微調(diào)每幀人臉坐標(biāo)讓整個(gè)人臉移動(dòng)軌跡更平滑。
2.服務(wù)端
1) 降噪:算法側(cè)不關(guān)心每一幀上到底哪張人臉重要或不重要,所以會(huì)有大量的路人臉是出現(xiàn)一秒不到就消失的,這種無意義的噪點(diǎn)需要直接過濾掉,即降噪處理;
2) 防抖:如果算法側(cè)平滑處理未達(dá)到要求,人臉在運(yùn)動(dòng)過程中還是有抖動(dòng),服務(wù)端可以對(duì)元數(shù)據(jù)進(jìn)行二次加工,讓人臉移動(dòng)更平滑;
3) 合并:算法側(cè)吐出的都是每一幀的元數(shù)據(jù),但客戶端關(guān)心的是一張人臉由出現(xiàn)到消失的整個(gè)軌跡過程,服務(wù)端會(huì)把元數(shù)據(jù)合并成一組組人臉的軌跡數(shù)據(jù),即人臉組數(shù)據(jù);
4) 氣泡彈幕數(shù)據(jù):跟隨彈幕的數(shù)據(jù),每條彈幕都對(duì)應(yīng)著一張人臉,也指定了彈幕開始展示的時(shí)該。
3.客戶端
1) 互動(dòng)SDK模塊:加載各種互動(dòng)腳本,每個(gè)腳本都是一個(gè)小的互動(dòng),比如電影評(píng)分、百科tips、雙流酷看等。利用了互動(dòng)SDK的基礎(chǔ)能力,這里把每張人臉由出現(xiàn)到消失的整個(gè)過程當(dāng)做一個(gè)小的互動(dòng)腳本;
2) 人臉腳本:人臉腳本中包含著該張人臉的軌跡坐標(biāo)和對(duì)應(yīng)該張人臉的彈幕氣泡數(shù)據(jù),腳本中有個(gè)定時(shí)器在輪詢,查找著當(dāng)前時(shí)刻對(duì)應(yīng)人臉的坐標(biāo),如果該時(shí)刻有跟隨彈幕數(shù)據(jù)則把該數(shù)據(jù)展示在人臉旁邊,繼續(xù)輪詢即達(dá)到了彈幕氣泡跟隨人臉移動(dòng)的效果。
二、為什么不通過客戶端直接識(shí)別人臉?
1. 實(shí)時(shí)觀看對(duì)于時(shí)間要求太高
對(duì)于客戶端來說,最終需要知道的是一張張人臉由出現(xiàn)到消失整個(gè)軌跡過程,如果客戶端做識(shí)別,目前只能識(shí)別到某一幀中人臉數(shù)據(jù),追蹤、平滑處理、防抖、過濾、合并,這整個(gè)過程下來耗時(shí)太大,根本無法滿足用戶實(shí)時(shí)觀看的需求;
2. 端側(cè)識(shí)別準(zhǔn)確度達(dá)不到要求
先前做彈幕穿人時(shí),iOS端接入過AliNN提供的SDK,人臉檢測還是偶而出現(xiàn)未檢測到的情況,如果人臉檢測準(zhǔn)確度上不能達(dá)到要求,必須自己做補(bǔ)幀處理,這個(gè)補(bǔ)幀處理很難做到實(shí)時(shí);
3. 端側(cè)識(shí)別影響用戶體驗(yàn)
端側(cè)識(shí)別時(shí)手機(jī)cup消耗增大,即耗電量會(huì)增大,同時(shí)可能也影響到播放器卡頓率。
三、棘手的問題
1.在即將切鏡頭時(shí)發(fā)跟隨彈幕,如何停留的問題
用戶發(fā)彈幕的時(shí)刻恰好在人臉馬上消失的時(shí)刻(比如馬上要切鏡頭),這時(shí)由于人臉會(huì)馬上消失,而其它人臉會(huì)馬上出來,問題來了,如果為了保證用戶能看到自己發(fā)的彈幕,那這條跟隨彈幕就需要強(qiáng)制在屏幕上停留幾秒,但就因?yàn)檫@幾秒鐘導(dǎo)致切鏡頭后這條跟隨彈幕很尷尬。測試同學(xué)反饋說彈幕在切鏡頭后很奇怪,給人一種“天空飄來一句話”的感覺。
對(duì)這個(gè)問題,最終我們的解決辦法是切鏡頭前一刻發(fā)的跟隨彈幕,在切鏡頭后直接跑漸隱效果,這樣即保證了用戶能看清自己的彈幕又保證不會(huì)尷尬地掛在下一個(gè)鏡頭的人臉上。視頻效果如下:
??
??
??
??
2.大劇熱綜頻繁剪輯導(dǎo)致人臉數(shù)據(jù)時(shí)間軸錯(cuò)亂的問題
一個(gè)視頻特別是綜藝上線后,會(huì)時(shí)不時(shí)地多次剪輯。一旦剪輯后,人臉數(shù)據(jù)和進(jìn)度條時(shí)間會(huì)錯(cuò)位,運(yùn)營同學(xué)可能會(huì)給出一個(gè)大概時(shí)間比如在一分二十秒位置剪掉十秒這樣的數(shù)據(jù),但人臉數(shù)據(jù)必須與進(jìn)度條時(shí)間在毫秒級(jí)單位上對(duì)應(yīng),否則會(huì)出現(xiàn)明顯延遲或超前。如果重跑數(shù)據(jù),可能需要幾個(gè)小時(shí)下線掉該功能,如果要復(fù)用數(shù)據(jù)就必須知道精確的毫秒值,然后剪切部分之后的人臉及彈幕數(shù)據(jù)全部做偏移處理,所以問題就是如何獲取精確的剪切時(shí)長。
按照如下方式,只需要跑新視頻剪切點(diǎn)前后一小段人臉數(shù)據(jù),即可計(jì)算出剪切的毫秒級(jí)時(shí)間,然后將原視頻中在剪切點(diǎn)后的人臉數(shù)據(jù)及彈幕數(shù)據(jù)全部偏移對(duì)應(yīng)時(shí)間即解決了數(shù)據(jù)錯(cuò)位問題。
??
??
四、未來展望
劇中的人臉數(shù)據(jù)如果只應(yīng)用在跟隨彈幕中就大材小用了,下一步我們準(zhǔn)備把帶有人臉數(shù)據(jù)和人體數(shù)據(jù)的腳本做為基本腳本,后面除了跟隨彈幕腳本,還會(huì)有彈幕穿人腳本等等。后續(xù)客戶端這部分架構(gòu)可能會(huì)調(diào)整,見下圖。方便大家通過外部注入等方式,構(gòu)建自己想要的腳本。 ??
??
所以當(dāng)你有了創(chuàng)新點(diǎn)子,也需要使用到人臉人體數(shù)據(jù)時(shí),可以繼承自基本腳本拿到數(shù)據(jù)后直接定制自己想要的功能,借助成熟的優(yōu)化過的人臉人體數(shù)據(jù),快速地完成demo。
比如YY一個(gè)場景,由于某些原因,需要給明星A所出現(xiàn)的鏡頭打上馬賽克,或下掉明星A參演的電影。下掉電影肯定不能接受,畢竟花了大價(jià)錢買版權(quán);靠人工對(duì)大量鏡頭重新剪輯又不現(xiàn)實(shí),這就到了考驗(yàn)各視頻APP技術(shù)能力的時(shí)候了。我們借助互動(dòng)SDK提供的能力,通過已經(jīng)下發(fā)的人臉I(yè)D判斷出是明星A時(shí)給下發(fā)的人臉框打上馬賽克,問題就解決了。
文章標(biāo)題:阿里工程師開發(fā)彈幕新玩法,網(wǎng)友不淡定了……
URL網(wǎng)址:http://www.dlmjj.cn/article/dpjdsod.html


咨詢
建站咨詢
