本發明涉及視頻字幕領域,更具體的說,其涉及用于一種效果百變的動畫字幕繪制方法。
背景技術:
隨著移動互聯網的普及,越來越多的人使用手機制作微視頻并在線上分享。很多短片(如教學視頻,搞笑短片等)需要字幕輔助說明。但市面上現有的字幕工具大多只能添加基本的靜態文字,或者用一組圖片序列保存動畫字幕,體積大且可拓展性差。此外,簡單的動畫效果也不能滿足多樣化的制作需求。
技術實現要素:
本發明的目的在于提供一種效果百變的動畫字幕繪制方法,使得每個動畫只需一個配置文件,無需打包很多圖片文件,體積小,在手機上性能良好。
為了解決上述技術問題,本發明的技術方案如下:
一種效果百變的動畫字幕繪制方法,具體包括如下步驟:
101)繪制文字步驟:將文字繪制在另一個空白畫面上,并傳入OpenGL,所述OpenGL為定義了一個跨編程語言、跨平臺的編程接口規格的專業的圖形程序接口;
102)獲取文字步驟:解析字幕配置文件,得到文字的屬性,構造三次貝塞爾曲線,得到文字的路徑及位置信息;
103)文字效果步驟:根據插值方式及動畫屬性計算出文字的動畫矩陣,所述插入方式根據步驟102)獲得的文字路徑和位置信息,確定文字的位置矩陣,在每個文字的位置矩陣上疊加上動畫矩陣,以達到動畫效果;
104)渲染文字步驟:將步驟101)繪制得到的紋理傳入OpenGL,由Shader即著色器進行渲染處理,并根據步驟103)得到的矩陣將文字紋理放到相應位置上,使其與背景視頻或圖片合成形成動畫字幕效果。
進一步的,所述步驟101)中對繪制的每個文字進行測量計算文字在空白畫面上所在的區域信息。
進一步的,所述步驟102)文字的屬性包括曲線點坐標、動畫屬性、時間點和動畫插值方式。
進一步的,所述動畫屬性包括位移,縮放,旋轉,模糊。
進一步的,所述步驟102)獲得文字的路徑及位置信息采用如下公式(1):
[x,y]=(1-t)3P0+3(1-t)2tP1+3(1-t)2P2+t3P3 公式(1)
其中[x,y]為貝塞爾曲線上點的位置,t為貝塞爾曲線參數,且在0-1之間取值P0,P1,P2,P3為貝塞爾曲線上的四個控制點。
進一步的,所述步驟103)的動畫插值方式包括三角變化、平滑變化、淡出變化和淡入變化,具體處理分別為如下公式(2)、公式(3)、公式(4)和公式(5),
R=(r<=0.5)?r=2.0*r:2.0*(1.0-r) 公式(2)
該公式(2)是條件表達式,表示如果r<=0.5成立,則r=2.0*r,如果r<=0.5不成立,則r=2.0*(1.0-r);
R=(1-r)*(1-r) 公式(4)
R=r*r 公式(5)
其中r為某一文字位置相對于整行文字寬度的比例,R為處理得到的系數;abs為一個浮點數取絕對值的函數。
本發明相比現有技術優點在于:
1.本發明的字幕文件,效果多樣(包括逐字動畫、整體文字運動、三維變換、文字模糊等)。只需改變配置文件的相關屬性,理論上有無限的動畫形式。
2.用戶在手機端可以選擇不同的動畫模板,自由編輯文字內容,生成相應的動畫字幕。
3.每個動畫只需一個配置文件,無需打包很多圖片文件,體積小,在手機上性能良好。
附圖說明
圖1為本發明一種效果百變的動畫字幕繪制方法的流程圖。
具體實施方式
下面結合附圖和具體實施方式對本發明進一步說明。
如圖1所示,一種效果百變的動畫字幕繪制方法,具體包括如下步驟:
101)繪制文字步驟:將文字繪制在另一個空白畫面上,并傳入OpenGL,所述OpenGL為定義了一個跨編程語言、跨平臺的編程接口規格的專業的圖形程序接口。所述繪制的每個文字進行測量計算文字在空白畫面上所在的區域信息。這就使得,每個動畫只需一個配置文件,無需打包很多圖片文件,其每個文字可以互相進行不同的搭配順序選擇,使得存儲的動畫文字體積小,存儲量小,能在手機上性能良好的進行運行。
102)獲取文字步驟:解析字幕配置文件,得到文字的屬性,構造三次貝塞爾曲線,得到文字的路徑及位置信息。所述文字的屬性包括曲線點坐標、動畫屬性、時間點和動畫插值方式。所述動畫屬性包括位移,縮放,旋轉,模糊等。所述獲得文字的路徑及位置信息采用如下公式(1):
[x,y]=(1-t)3P0+3(1-t)2tP1+3(1-t)2P2+t3P3 公式(1)
其中[x,y]為貝塞爾曲線上點的位置,t為貝塞爾曲線參數,且在0-1之間取值P0,P1,P2,P3為貝塞爾曲線上的四個控制點。
103)文字效果步驟:根據插值方式及動畫屬性計算出文字的動畫矩陣,所述插入方式根據步驟102)獲得的文字路徑和位置信息,確定文字的位置矩陣,在每個文字的位置矩陣上疊加上動畫矩陣,以達到動畫效果。所述的動畫插值方式包括三角變化、平滑變化、淡出變化和淡入變化,具體處理分別為如下公式(2)、公式(3)、公式(4)和公式(5),
R=(r<=0.5)?r=2.0*r:2.0*(1.0-r) 公式(2)
該公式(2)是條件表達式,表示如果r<=0.5成立,則r=2.0*r,如果r<=0.5不成立,則r=2.0*(1.0-r);
R=(1-r)*(1-r) 公式(4)
R=r*r 公式(5)
其中r為某一文字位置相對于整行文字寬度的比例,R為處理得到的系數;abs為一個浮點數取絕對值的函數。
104)渲染文字步驟:將步驟101)繪制得到的紋理傳入OpenGL,由Shader即著色器進行渲染處理,可以改變每個文字的顏色,透明度,模糊程度等,并且shader也有無限拓展性。根據步驟103)得到的矩陣將文字紋理放到相應位置上,使其與背景視頻或圖片合成,最終達到預期的動畫字幕效果。
綜上所述,在手機視頻app中,選擇影片后,再添加預設置下載的步驟101)的動畫配置文件,用戶可自行選擇想要的效果或系統推薦的效果,去生成相應的動畫,進行字幕的文字渲染。系統就可以通過上述的處理方法,在屏幕中,生成可見的動畫字幕。
以上所述僅是本發明的優選實施方式,應當指出,對于本技術領域的普通技術人員,在不脫離本發明構思的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明保護范圍內。