首页
学习
活动
专区
圈层
工具
发布

全网最全的 Android 音视频和 OpenGL ES 干货,都在这了

模型 OpenGL ES 3.0 开发(21):3D 模型加载和渲染 OpenGL ES 3.0 开发(22):PBO OpenGL ES 3.x 开发(23):UBO 和 TBO ?...Android FFmpeg 音视频开发系列 (01)FFmpeg 编译和集成 (02)FFmpeg + ANativeWindow 实现视频解码播放 (03)FFmpeg + OpenSLES 实现音频解码播放...(04)FFmpeg + OpenGLES 实现音频可视化播放 (05)FFmpeg + OpenGLES 实现视频解码播放和视频滤镜 (06)FFmpeg 播放器实现简单音视频同步的三种方式 (07...)FFmpeg + OpenGL ES 实现 3D 全景播放器 (08)FFmpeg 播放器视频渲染优化 (09)FFmpeg、x264以及fdk-aac 编译整合 (10)FFmpeg 视频录制 -...视频添加滤镜和编码 (11)FFmpeg + Android AudioRecorder 音频录制编码 (12)Android FFmpeg 实现带滤镜的微信小视频录制功能 这里也准备了一些入门的视频教程

3.3K21

OpenGL-投影和摄像机

1.OpenGL中的摄像机、视景体、近平面 OpenGL的摄像机和现实世界中的人眼很相似,都有一个三维的坐标表示位置,眼睛的朝向和视野范围,位置和眼睛朝向不同,所观察到的物体的形态就会有所不同,视野范围则规定了只有在该范围的物体才会进入人的视线...,超出视野范围的部分就无法被观察到(人总不可能观察到耳朵两边和后脑勺的物体吧。)...所以,在OpenGL中的摄像机看来,是这样观察物体的: ? 摄像机视角看近平面: ?...2.坐标系 手机屏幕坐标系 二维坐标系,左上角为原点,X,Y轴正方向分别为右和下,XY取值范围为屏幕分辨率。 ? OpenGL世界坐标系 ?...一般会保持近平面的宽高比和视口的宽高比相等。

3.4K121
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    FFmpeg + OpenGL ES 实现 3D 全景播放器

    FFmpeg + OpenGLES 实现 3D 全景播放器 前文中,我们已经利用 FFmpeg + OpenGLES + OpenSLES 实现了一个多媒体播放器,本文将基于此播放器实现一个酷炫的 3D...普通播放器播放全景视频画面会扭曲变形 用普通的多媒体播放器播放全景视频,画面会呈现出严重的拉伸和扭曲变形。...为实现全景播放器,我们只需要利用 OpenGL 构建一个球体,然后将 FFmpeg 解码的视频画面渲染到这个球体表面即可。...球体网格 OpenGL ES 中所有 3D 物体均是由三角形构成的,构建一个球体只需要利用球坐标系中的经度角、维度角以及半径计算出球面点的三维坐标,最后这些坐标点构成一个个小矩形,每个矩形就可以分成 2...顶点坐标和纹理坐标初始化 VAO 。

    1.4K31

    Android FFmpeg 编译和集成(十四)

    交叉编译生成,so动态库 编译工具链 对于C/C++的编译,通常有两个工具 GCC 和 CLANG 。...源码项目和NDK编译工具的本地路径,如下图: [image.png] 4.添加脚本权限 编写完脚本文件,需要添加权限。.../build_android_clang.sh 等待编译完成,将会在 当前文件夹的/android/armv8-a目录下得到 include 和 lib 两个目录,分别是 头文件 和 so库文件,就是我们需要编译生成的...中显性的把相关的 so 添加和链接起来。...音视频编解码器的信息 image.png 小结: 使用Android NDK工具对ffmpeg 源码进行交叉编译动态库的原理比较简单,但是在实践操作过程中,需要主要编译工具中路径的设置,和编译脚本内参数的设置

    10.5K83

    【OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 )

    文章目录 一、OpenGL 状态机概念 二、OpenGL 矩阵概念 上一篇博客 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为...OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★ 进行了 OpenGL 渲染环境初始化 ; 本篇博客简单介绍 OpenGL 中的一些理论概念 ; 一、OpenGL 状态机概念 ----...OpenGL 是一个状态机 , 其中包含了很多状态 , 简单列举下面的几项 : OpenGL 中的 矩阵 Matrix , 包含了 投影 ( Projection ) 矩阵 , 模型 ( Model...】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★ 中Windows 窗口创建完成后..., 绿色 , 蓝色 , 透明度 // 这里设置的是红色 glClearColor(1.0, 0.0, 0.0, 1.0); 初始化矩阵 : // 矩阵环境初始化 , 主要是投影矩阵和模型矩阵

    4.4K01

    相机、OpenGL、视频、Flutter和SurfaceView

    本篇会从一下几点的极简操作,来让你对SurfaceView有个感性的认知: [1].Camera的预览和SurfaceView的使用 [2].Camera2的预览和SurfaceView的使用 [...3].OpenGL中的GLSurfaceView [4].Camera2和OpenGL的结合 [5].视频播放和和OpenGL的结合 [6].Flutter与SurfaceView的联系 ?...中GLSurfaceView使用 GLSurfaceView作为SurfaceView的子类,打开了一扇叫作OpenGL的大门。...---- 5.OpenGL在视频播放中的使用 如果你稍微了解一下视频播放,会知道MediaPlayer可以和Surface狼狈为奸 于是乎,同理,可以将视频播放和OpenGL结合,然后通过shader...来逆天改命 这里思路几乎一致GLVideoView中进行SurfaceTexture和纹理绑定,并生成Surface给MediaPlayer 关于MediaPlayer的视频播放,详见:Android

    3.3K20

    OpenGL ES 投影和坐标

    X轴和Y轴上[-1,1]的范围内,对于Z轴也一样。...接下来,我们需要找到某种可以把虚拟空间坐标转化回归依化设备坐标的方法,让OpenGL可以正确的渲染它们。这种转换应该把屏幕方向计算在内,以使图像在竖屏模式和横屏模式看上去都一样。...4.线性代数基础 OpenGL大量使用了向量和矩阵,矩阵的最重要的用途之一就是建立正交和透视投影。...它在OpenGL里十分常用。使用这种类型的矩阵,我们可以把一个物体沿着指定的距离移动。这个矩阵和单位矩阵差不多,但在右侧指定了三个额外的元素: ?...这个位置正是我们所期望和(5,5)。 5.正交投影 要定义正交投影,我们将使用Android的Matrix类,它在android.opengl包中。

    1.1K30

    ffmpeg的安装和使用教程_Anaconda安装ffmpeg

    大家好,又见面了,我是你们的朋友全栈君 一、ffmpeg的简介 FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库...ffmpeg的官网地址是:https://www.ffmpeg.org/ ffmpeg的Github项目地址是:https://github.com/FFmpeg/FFmpeg 更多详细内容请参考维基百科...二、安装 FFmpeg可以在Windows、Linux还有Mac OS等多种操作系统中进行安装和使用。...例如:G:\【1】软件(已经过测试)\ffmpeg-4.0-win64-static\ffmpeg-4.0-win64-static\bin 3、配置完成后运行cmd,输入ffmpeg,若显示如下界面...-b:v 640k output.ts 具体用法参考: ffmpeg参数中文详细解释 详细的使用说明(英文):http://ffmpeg.org/ffmpeg.html 版权声明:本文内容由互联网用户自发贡献

    2.6K10

    FFmpeg 开发(01):FFmpeg 编译和集成

    [FFmpeg 编译和集成] 该原创文章首发于微信公众号:字节流动 为什么要学 FFmpeg 开发 FFmpeg 是一款知名的开源音视频处理软件,它提供了丰富而友好的接口支持开发者进行二次开发。...FFmpeg 项目功能复杂而庞大,基本上支持所有常见的音视频处理操作,如封装格式转换、音视频转码、音视频播放和剪辑、视频添加水印滤镜等。...尽管 FFmpeg 功能强大,但是由于其采用的是带有传染性的 LGPL/GPL 开源协议,所以一些大厂基本上都是自己独立开发类似的音视频处理库,甚至在接口和组织模块上模仿 FFmpeg 。...的编译和集成,对 FFmpeg 项目的编译配置细节就不过多阐述,这不是本篇内容所能容纳。...各个模块版本和编译配置信息。

    4.4K30

    OpenGL(五)-- OpenGL中矩阵的变换OpenGL(五)-- OpenGL中矩阵的变换

    OpenGL(五)-- OpenGL中矩阵的变换 前言 照常提出几个问题,希望通过阅读可以找到答案。 对物体3维的2维投影进行位移,有几种方式? 模型视图矩阵代表了什么?...可以想象在观察者和物体中间有一个画板,观察者最终看到的图像是在这个画板上的,这个画板的位置就是由投影矩阵来表示的。在这个画板上的图像才是可以用于显示的2d图像。...确立透视投影需要的参数: aspect(远/近裁切面的宽高比,它本身也是视口) , near(近裁切面位置) , far(远裁切面位置),投影角度,视口位置 以上图片都出自:_superhuihui-OpenGL...如果想要了解具体矩阵是如何计算的:3D数学 矩阵知识 矩阵栈 在计算时会发现这种计算会导致物体唯一无法重置,为了解决这种问题OpenGL提出了矩阵栈的概念。栈这个概念应该是很熟悉了吧!...拿出这单元矩阵和另一个矩阵相乘,就会得到一个新的矩阵(矩阵6)。 3. 使用矩阵6之后,将最上方矩阵出栈(POP操作) 仿射变换API ?

    2.7K11

    FFmpeg + OpenGL ES 实现 3D 全景播放器

    FFmpeg + OpenGLES 实现 3D 全景播放器 FFmpeg 开发系列连载: FFmpeg 开发(01):FFmpeg 编译和集成 FFmpeg 开发(02):FFmpeg + ANativeWindow...(05):FFmpeg + OpenGLES 实现视频解码播放和视频滤镜 FFmpeg 开发(06):FFmpeg 播放器实现音视频同步的三种方式 前文中,我们已经利用 FFmpeg + OpenGLES...为实现全景播放器,我们只需要利用 OpenGL 构建一个球体,然后将 FFmpeg 解码的视频画面渲染到这个球体表面即可。...球体网格 OpenGL ES 中所有 3D 物体均是由三角形构成的,构建一个球体只需要利用球坐标系中的经度角、维度角以及半径计算出球面点的三维坐标,最后这些坐标点构成一个个小矩形,每个矩形就可以分成 2...顶点坐标和纹理坐标初始化 VAO 。

    1.5K20

    OpenGL 优化项之面剔除和注意点

    在 OpenGL 中允许检查所有正面朝向观察者的面,并渲染它们,而丢弃所有背向观察者的面,这就可以节省片段着色器的运行。 所以,我们要做的就是告诉 OpenGL 哪个面是正面,哪个面是背面。...这也是为什么说,定义三角形顶点顺序时要假设三角形是面向你的,保证逆时针定义,并且可以根据观察者方向的改变,顺时针和逆时针方向会发生改变。 如下图: ?...但是从右侧眼镜处来观察,右侧三角形方向是逆时针的,左侧三角形方向是顺时针的,这就是因为对于右侧三角形来说,观察者方向和当初定义顺序时的假设方向一致,而对于左侧三角形,观察者方向就和定义顺序时的假设方向相反了...看了好多文章,都没有讲:为什么要逆时针定义三角形方向,但是观察时却成了顺时针了,就是因为当初定义的逆时针方向其实是和观察者方向挂钩的。...另外,OpenGL 还提供了其他功能来选择要剔除的面。

    1.5K50

    OpenGL ES 之uniform和varying

    uniform定义如下: uniform float uTexPos; uniform 变量通常是存储在GPU的”常量区”,这一区域的内存是有限的,因此uniform有个数限制,但比attribute要多很多,OpenGL...标准化组织规定OpenGL ES 2.0规定至少支持128个顶点uniform和16个片段(Fragment)uniform。...varying是GLSL中限定符,varying限定的变量只能在shader之间传递,是Vertex Shader(顶点着色器)的输出,Fragment Shader(片段着色器)的输入,Shader中的声明和类型要保持一致...代码如下: precision mediump float; varying vec4 color; void main() { gl_FragColor = color; } 与attribute和uniform...一样,varying也有数量限制,OpenGL ES 2.0至少支持8个,获取varying的最大个数,代码如下: fun getMaxSupportNum(): Int { var count

    2.4K21

    FFmpeg 开发(02):利用 FFmpeg 和 ANativeWindow 实现视频解码播放

    FFmpeg + ANativeWindow 实现视频解码播放 上一篇文章FFmpeg 开发(01):FFmpeg 编译和集成 实现了 FFmpeg 的编译和集成。...1 FFmpeg 视频解码 参考雷霄骅博士的音视频处理流程图,我们大概了解了本节的处理流程:(Mp4文件)解协议->解封装->视频解码->缩放或格式转换->渲染。...,编码和解码时必须用到的结构体,包含编解码器类型、视频宽高、音频通道数和采样率等信息; AVCodec:存储编解码器信息的结构体; AVStream:存储音频或视频流信息的结构体; AVPacket:存储音频或视频编码数据...FFmpeg 视频解码和渲染流程: FFmpeg 视频解码播放流程 FFmpeg 视频解码代码实现流程: //1.创建封装格式上下文 m_AVFormatContext = avformat_alloc_context...设置渲染区域和输入格式 ANativeWindow_setBuffersGeometry(m_NativeWindow, m_VideoWidth,

    71810

    【OpenGL ES】 Android OpenGL ES -- 透视投影 和 正交投影

    摄像机参数 :  -- 摄像机位置 : 摄像机的 三维坐标位置 x, y, z 坐标; -- 观察方向 : 摄像机镜头的朝向, 是一个三维向量, 指向一个三维坐标方向; -- up 方向 : 有了位置 和...mVertextShader是顶点着色器脚本代码 * 调用工具类方法获取着色器脚本代码, 着色器脚本代码放在assets目录中 * 传入的两个参数是 脚本名称 和...ShaderUtil.loadFromAssetsFile("frag_projection.sh", mv.getResources()); //③ 基于顶点着色器与片元着色器创建程序, 传入顶点着色器脚本 和...流程 * ① 设置屏幕参数 * ② 初始化 GLSurfaceView * ③ 设置显示 GLSurface * * 在onResume 和 onPause 中分别调用 GLSurfaceView...的 onResume 和 onPause 方法 * @author octopus * */ public class OrthogonalProjectionActivity extends

    2.8K30

    使用ffmpeg压缩和拼接音频

    录音可以用于及时地复习和回顾,避免忘记会议中的内容。 本文作者会展示一个完整的使用ffmpeg压缩和拼接音频的例子。 在例子中,3段会议的录音,如下图所示: ?...image.png 2.下载ffmpeg软件 本文作者提供ffmpeg软件,是视频处理和音频处理必需的软件。...链接: https://pan.baidu.com/s/1dJoj14wOofBXuI5Vp1hX_g 提取码: bwd2 压缩文件下载ffmpeg软件.zip下载后,放到桌面的文件夹录音压缩和拼接中...image.png 在桌面的文件夹录音压缩和拼接中打开cmd, 在cmd中输入命令并运行:ffmpeg -f concat -i list.txt -c copy "all.mp3" 运行过程中截图如下图所示...image.png 5.总结 1.本文详细介绍了使用ffmpeg压缩和拼接音频的过程。 2.在熟练cmd中的命令后,读者可以把命令整合成一个bat批处理文件,bat批处理文件双击即可运行。

    6.7K10
    领券
    首页
    学习
    活动
    专区
    圈层
    工具
    MCP广场