From 1e85414eb8f46e746a64a44b460181c32a152147 Mon Sep 17 00:00:00 2001 From: CharonChui Date: Wed, 17 Apr 2024 11:03:28 +0800 Subject: [PATCH] update OpenGL part --- .../OpenGL/1.OpenGL\347\256\200\344\273\213.md" | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git "a/VideoDevelopment/OpenGL/1.OpenGL\347\256\200\344\273\213.md" "b/VideoDevelopment/OpenGL/1.OpenGL\347\256\200\344\273\213.md" index 7578a7eb..ab8a5559 100644 --- "a/VideoDevelopment/OpenGL/1.OpenGL\347\256\200\344\273\213.md" +++ "b/VideoDevelopment/OpenGL/1.OpenGL\347\256\200\344\273\213.md" @@ -588,6 +588,23 @@ Android 通过其框架 API 和原生开发套件 (NDK) 来支持 OpenGL。 Android 框架中有如下两个基本类,用于通过 OpenGL ES API 来创建和操控图形:`GLSurfaceView` 和 `GLSurfaceView.Renderer`。 +#### 视频数据流 + +视频从视频文件到屏幕显示出来,Surface起到了非常重要的作用,在视频解码时,需要一个Surface作为 +已解码数据的载体,保存播放器解码后的数据。 + +在显示时,需要另一个Surface作为已渲染数据的载体,保存OpenGL渲染后的数据,最后通过EGL显示在屏幕上。 + +数据流如下图所示: + +![image](https://github.com/CharonChui/Pictures/blob/master/video_display_process.webp?raw=true) + +- 解码器(MediaCodec或FFmpeg等)将视频文件中的视频编码数据解码成图像流放到Surface中。 +- SurfaceTexture把Surface生成的图像流,转换为纹理 +- OpenGL ES渲染纹理生成图形数据,放到GLSurfaceView中的Surface中 +- EGL从Surface中取出图形数据,显示到屏幕上 + + ### 参考 ---