美文网首页
OpenGl 直接读取YUV420P

OpenGl 直接读取YUV420P

作者: 贝克街的猫大哥呀 | 来源:发表于2018-07-18 15:56 被阅读0次

   前面已经讲过,ffmpeg提供了方法,将解码后的yuv420p格式重采样为RGBA格式,再通过surface进行播放。但视频重采样,或者说转码这个过程,ffmpeg太消耗性能,开销太大,现在主流的做法都是将解封装解码由ffmpeg处理,解码得到的YUV420格式,直接交给openGl进行输出显示。

   我们在android中,一般不会直接调用OpenGl, 而是调用EGL,EGL相当于是一个中间件,可以连接OpenGl与android之间。   

   在CMAKE中,直接引入这些库就行了,不需要再加入其它SO库,这是NDK里面就存在的。

在JAVA中,依然先设置一个XPLAY控件,完成一些JAVA层的初始化,再将此控件在XML中写入即可:

接着就是在C++文件,完成 Open方法。这里就是直接让yuv文件,通过EGL,播放出来 。

先说一下逻辑,EGL其实有俩个要点,顶点着色器和片元着色器。 就是所谓的shader。其实EGL就是通过shader,来将YUV转换为RGBA,效率奇高。这就是关键。

顶点着色器,用GLSL写,不明白,大概就是一种语言,直接复制

  片元着色器也是一样。这里定义了YUV转RBG的算法

    这里是初始化shader,两种着色器都是调用此方法创建

相关文章

  • OpenGl 直接读取YUV420P

    前面已经讲过,ffmpeg提供了方法,将解码后的yuv420p格式重采样为RGBA格式,再通过surface进行...

  • OpenGL笔记七:纹理常用API(二)

    前言 期待您移步上篇:OpenGL笔记六:纹理常用API(一) 从颜⾊缓存区内容 - 像素图直接读取 更新纹理 插...

  • OpenGL渲染YUV数据

    本文主要介绍使用OpenGL ES来渲染I420(YUV420P) , NV12(YUV420SP)的方法,关于Y...

  • OpenGL 纹理

    OpenGL纹理 1.认识函数 像素存储方式 从颜色缓存区内容作为像素图直接读取 载入纹理 更新纹理 插入替换纹理...

  • 七、OpenGL纹理

    OpenGL纹理 1. 认识函数 像素存储方式 从颜色缓存区内容作为像素图直接读取 载入纹理 更新纹理 插入替换纹...

  • OpenGL基础纹理

    第五章 OpenGL基础纹理 本章内容: 一、常用函数 像素存储方式 从颜色缓存区内容作为像素图直接读取 载入纹理...

  • OpenGL基础纹理

    第五章 OpenGL基础纹理 本章内容: 一、常用函数 像素存储方式 从颜色缓存区内容作为像素图直接读取 载入纹理...

  • GLFW

    前言 一个轻量级,开源的,跨平台的library。支持OpenGL及OpenGL ES,用来管理窗口,读取输入,处...

  • 使用Xcode编译C++ 相对路径不可用问题

    抽空学习OpenGL使用Xcode作为编译环境, 创建工程如下 读取着色器文件 读取成功. 如果是创建 Comma...

  • OpenGL渲染架构以及三种数据传递方式

    一、OpenGL渲染架构 了解OpenGL渲染架构对我们学习OpenGL有非常重要的作用。话不多说,直接上图: 图...

网友评论

      本文标题:OpenGl 直接读取YUV420P

      本文链接:https://www.haomeiwen.com/subject/kemfpftx.html