2014-05-19 50 views
5

我的目標是在錄製過程中將視頻嵌入到Android中並記錄下來。如何在Android中錄製視頻時嵌入文本?

我跟着Grafika Project,CameraCaptureActivity.java的樣本,他們使用OpenGL 2.0錄製一個小塊以及錄製視頻。他們正在使用以下代碼來繪製塊在OpenGL 2.0

private static void drawExtra() 
{ 
     GLES20.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 
     GLES20.glEnable(GLES20.GL_SCISSOR_TEST); 
     GLES20.glScissor(0, 0, width/3, height/3); 
     GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 
     GLES20.glDisable(GLES20.GL_SCISSOR_TEST); 
} 

上述代碼在視頻的底部左側畫白色塊,同時記錄和保存。

我想要的是使用OpenGL 2.0在白框上繪製文字,以便它還會隨着視頻一起錄製。

我沒有OpenGL 2.0的知識。需要幫助才能在視頻正在記錄的同一表面上繪製文本,以便將其嵌入到內容中,就像白盒一樣。

回答

2

您可以嘗試使用英特爾INDE https://software.intel.com/en-us/intel-inde和適用於Android的媒體包,這是INDE的一部分,教程https://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials。它有一個名爲TextOverlayEffect的示例效果,可將文本放在視頻上

+0

Thankx很多.....它的工作....非常感謝你 –

+0

很酷,歡迎:) – Marlon

+0

@NavjotBedi如何使用OpenGL 2.0繪製文本? – chohyunwook

1

這不是特定於MediaCodec的。在OpenGL中繪製文本是一件很常見的事情。通常的做法是使用字體引擎(例如Skia)將紋理渲染爲紋理,然後渲染紋理。

Android Breakout使用這種方法:它將一組固定的字符串呈現給紋理,然後從該紋理呈現。大部分字符串都是完整的(「遊戲結束」),但分數數字是單獨處理的。具體參見this class

如果你的字符集是有限的,而且你對字距不太感興趣(例如,英文的ASCII文本出現的很好),你可以渲染單個字符字形,然後繪製。版本1.1。 「screenrecord」工具的功能就是這樣做的。 (請注意,這是implemented in C++。)

您可以在this video的工作中看到。錄製視頻時,屏幕頂部的文本初始頁面和文本行由屏幕錄製覆蓋,每次繪製一個字符。 「準備好了嗎?」帶有投影的消息由遊戲從單個字符串呈現。 (這些菜單只是用Android框架呈現的。)

最好的辦法是找到一個能夠爲你做到這一點的圖書館,並擁有友好的開源許可證。