本篇作為技術分享系列的第三篇,詳細講一下手繪視頻中結合視頻的處理方式。 隨著近幾年短視頻和直播行業的興起,視頻成為了人們表達情緒和交流的一種重要方式,人們對於視頻的創作、編輯和分享有了更多的需求。而視頻的編輯、剪輯方式,也由過去需要藉助專業的視頻剪輯軟體,專業的視頻剪輯操作者操作,變為現在的普通用戶 ...
本篇作為技術分享系列的第三篇,詳細講一下手繪視頻中結合視頻的處理方式。
隨著近幾年短視頻和直播行業的興起,視頻成為了人們表達情緒和交流的一種重要方式,人們對於視頻的創作、編輯和分享有了更多的需求。而視頻的編輯、剪輯方式,也由過去需要藉助專業的視頻剪輯軟體,專業的視頻剪輯操作者操作,變為現在的普通用戶可以使用視頻類 App 很方便的創作出視頻。
短視頻和直播類 App 對於視頻的處理,主要集中在:濾鏡、美顏、貼紙、視頻剪切和拼接、視頻變速、音軌合成,這些實現基本都是基於 OpenCV、OpenGL 和 FFMpeg 的實現,這裡我們不多做介紹,本篇主要介紹的是手繪視頻中插入視頻文件的處理和視頻中加入手繪視頻元素的處理。
這兩種形式的應用場景很多,例如手繪視頻中有一個電視機框,視頻在框內播放;再比如視頻為天氣預報,周圍加上手繪視頻的人物元素,形成人物解說的形式;再比如最常見的在視頻中加入一些手繪視頻元素,做成動態特效或字幕/表情等,下麵是幾個例子:
上面例子的結合方式分別是:
1) 黑板部分為插入的視頻,周圍是手繪人物和手勢,字幕等;
2) 電視機框內是插入的視頻,周圍手繪視頻元素營造一個觀看電視的場景;
3) 電視框內是插入的視頻,手繪視頻元素營造播報新聞的場景;
4) 這個是我臨時做的,在視頻中插入手繪視頻元素,主體還是視頻,做出一些特效等。
下麵先介紹手繪視頻中插入視頻文件的處理:
以上面前三張圖為例,這種結合方式中插入的視頻,都是把視頻以固定大小放在了固定的位置,在設定的開始時間開始出現,播放完成後消失。而聲音處理方面,在視頻出現後,手繪視頻的背景音樂需要和視頻的聲音做音軌合成。結合前面幾篇說的 SVG 的繪製和文字的繪製,整體流程:
接下來是視頻中插入手繪視頻元素的處理:
這種情況以第四張圖為例,這種方式,我們認為視頻會維持原本的尺寸和幀率,而手繪視頻元素,在指定時間,以指定的速度角度和指定的起始終止位置出現,動畫播放完成後,或維持在原位置,或消失。整體流程:
上面兩種方式的整體流程中,大部分流程是共通的,或者說第二種情況是第一種情況的一個特例,它指定的視頻寬高就是視頻的寬高,視頻之外不存在手繪元素。而且視頻固定出現在層級的最底層。
流程中大部分操作都是比較常規的音視頻操作,如解析視頻文件、合成音軌、視頻幀序列生成視頻文件等。其中關鍵的一個步驟是視頻每一幀的獲取,因為涉及到各種元素的動畫,所以這個獲取過程的原理是:在後臺運行一張畫布,把每個需要渲染的元素動畫,按照實際動畫屬性去渲染,包括位置、速度、角度、層級覆蓋關係等,然後按照導出視頻指定的幀率去截取畫布生成視頻幀。
到這就把手繪視頻與視頻的結合介紹完了,實現過程相對簡單,但是應用場景很廣泛,如果有更有趣的場景,歡迎交流!