Android OpenGL添加水印並錄製視頻–抖音視頻錄製原理
- 簡單的視頻錄製,我們可以使用MediaRecorder,具體示例可以參考Gitee: Camera2VideoJava
- 本文將介紹採集Camera的預覽數據,然後通過OpenGL添加水印、貼紙、美顏濾鏡等後渲染到GLSurfaceView,再用MediaCodec硬編碼後通過MediaMuxer寫入MP4文件。
源碼地址: Gitee: OpenGLRecorder
大致流程如下,詳細可以參見相應代碼連接
-
CameraGlView 用來顯示Camera預覽的View
CameraGlView extends GLSurfaceView -
創建SurfaceTexture,用來顯示Camera預覽,參見CameraRenderer.java
mSurfaceTexture = new SurfaceTexture(mTextures[0]);
…
mCameraHelper.startPreview(mSurfaceTexture); -
CameraFilter.java,通過OpenGL將Camera數據寫入FBO(Frame Buffer Object 幀緩存)
-
TimeFilter.java,通過OpenGL在FBO上添加時間水印。
可以參考此處添加貼紙、美顏等 -
ScreenFilter.java,將FBO繪製到mSurfaceTexture
-
MediaRecorder.java,用MediaCodec和EGL對Surface的內容採集編碼爲avc並寫入到MP4文件
原創文章,轉載請註明出處、原文鏈接!
[email protected] 我的主頁https://chenjim.com
參考文章:
- OpenGL ES SDK for Android: High Quality Text Rendering
- Github:opengl-es-sdk-for-android/HighQualityTextJava
- Github:android-openGL-canvas
- Github:Media for Mobile is a set of easy to use components and API for a wide range of media scenarios such as video editing and capturing
- VideoRecorder高性能任意尺寸視頻錄製 斷點錄製 離屏錄製 錄製時的Canvas API支持 實時濾鏡,相關資料介紹Link
- 抖音錄製視頻預習資料