自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 (五)(2)OpenGL下的渲染技巧(上)-裁剪、混合

一、裁剪在 OpenGL 中提高渲染的一种方式。只刷新屏幕上发生变化的部分,OpenGL 允许将要进行渲染的窗口只去指定一个裁剪框。基本原理:用于渲染时限制绘制区域,通过此技术可以在屏幕(帧缓冲)指定一个矩形区域。启用裁剪测试之后,不在此矩形区域内的片元被丢弃,只有在此矩形区域内的片元才有可能进入帧缓冲。因此实际达到的效果就是在屏幕上开辟一个小窗口,可以再其中进行指定内容的绘制。1、裁剪相关代码配置1.1、开启裁剪测试glEnable(GL_SCISSOR_TEST);1.2、开启裁剪测试g

2021-07-12 18:32:06 1483

原创 (四)(1)OpenGL下的渲染技巧(上)_固定着色器种类与基本图元连接方式

一、固定着色器种类存储着色器初始化// GLShaderManager 的初始化GLShaderManager shaderManager;shaderManager.InitializeStockShaders();1、单元着色器GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);参数1:存储着色器种类-单元着色器(GLT_SHADER_IDENTITY)参数2:颜色使用场景:绘制默认Op

2021-07-08 09:52:51 190

原创 (五)(1)OpenGL下的渲染技巧(上)绘制甜甜圈实例---正背面剔除解析、深度测试、多边形偏移

一、运行效果展示可以通过方向键转动方向二、代码实现1、代码设计实现流程2、代码0)相关类定义//演示了OpenGL背面剔除,深度测试,和多边形模式#include "GLTools.h" #include "GLMatrixStack.h"#include "GLFrame.h"#include "GLFrustum.h"#include "GLGeometryTransform.h"#include <math.h>#ifdef __APPLE__#inclu

2021-07-07 17:54:51 535

原创 (四)(2)OpenGL下的渲染技巧(上)_图元连接方式综合实践

上一篇罗列出来几种图元连接方式,然后再这个篇里我们开始实践帮助理解加深印象一、实现效果(多个图形点击空格就切换,单击方向键切换视角)二、代码实现1、代码设计实现流程2、代码0、相关类定义// 各种需要的类GLShaderManager shaderManager;GLMatrixStack modelViewMatrix; //设置变换GLMatrixStack projectionMatrix; //设置投影方式GLFrame cameraFrame;GL

2021-07-02 19:11:16 275

原创 (三)(3)八固定着色器种类(只需了解)

存储着色器加粗初始化// GLShaderManager 初始化GLShaderManager shaderManager;shaderManager.InitializeStockShaders();一、单元着色器GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY, GLfolat vColor[4]);参数1: 存储着⾊器种类-单元着⾊器参数2: 颜⾊使⽤场景: 绘制默认OpenGL 坐标系(-1,1)下图形. 图形所有⽚段都会以

2021-06-29 20:29:47 157

原创 (三)(2)OpenGL 渲染结构与投影

一、OpenGL 渲染架构图说明:Application Code C/C++ OpenGL API: Client 代表客户端Server : 代表 OpenGL 底层Vertex Shader(顶点着色器)、Fragment Shader(片元着色器)可进行自定义编程数据的传递顶点着色器的参数传递的三种方式Attributes(属性):顶点数据,投影矩阵,模型矩阵,纹理坐标(图片映射坐标关系)->顶点着色器->桥接给片元着色器Uniforms:统一批次(变换矩阵,

2021-01-18 21:14:32 252

原创 (三)(1)离屏渲染触发原因

1、离屏渲染测试案例- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.view.backgroundColor = [UIColor whiteColor]; //1.按钮存在背景图片 UIButton *btn1 = [UIButton buttonWithType

2021-01-15 19:02:04 467 1

原创 (二)(1)OpenGL-iOS场景下的渲染

一、CPU 与 GPUCPU 现代计算机整个系统的运算核⼼、控制核⼼。特点:依赖性非常高,并发、时间片、切换。有控制单元,计算单元,高级缓存等组成。GPU 可进⾏绘图运算⼯作的专⽤微处理器,是连接计算机和显示终端的纽带。特点:计算单元、高并发、依赖性。有流处理控制器、计算单元组成。二、计算机渲染原理最初形态 —> 最终形态+1、随机扫描显示2、光栅扫描显示图像由像素阵列组成,显示一个图像时间,显示整个光栅所需的时间,和图像复杂度无关显示过程中不断刷新,人眼感受不到1) 光栅

2021-01-09 15:04:11 266

原创 (一)(1)OpenGL入门---Open GL 在 Mac 上的配置

准备资源开始配置1)新建工程2)添加OpenGl.framework 和 GLUT.framework 两个系统库3)添加资源库及配置路径a.将PenGLShare 里的资源文件加入项目并配置include路径b.将 libGLTools.a 加入Frameworks 中c.删除AppDelegate.h 、 AppDelegate.m 、 main.m 、ViewController.h 、 ViewController.m文件,创建main.cpp...

2020-12-30 19:57:58 312

原创 FFmpeg将mp4格式视频转为flv

转换视频格式步骤1、打开输入文件2、创建并打开一个空文件存储 flv 格式音视频数据3、遍历输入文件的每一路流,每个输入流对应创建一个输出流,并将输入流中的编解码参数直接拷贝到输出流中。4、写入新的多媒体文件的头5、在循环遍历输入文件的每一帧,对每一个packet进行时间基的转换6、写入新的多媒体文件7、给新的多媒体文件写入文件尾8、释放相关资源源码:#include <libavutil/timestamp.h>#include <libavformat/avfor

2020-07-27 21:41:14 1623

原创 抽取视频数据

抽取视频数据步骤1、打开.mp4格式文件2、创建并打开一个空文件存储 H264 数据3、找到视频流,并循环读取流中AVPacket,并为每个流添加特征码和sps/pps等数据(只有关键帧前面要添加sps/pps数据,其他的只需要添加特征码)。4、都处理完后将数据写入文件保存读取sps和pps 数据从AVCodecContext的extradata数据域中读取,如下所示,mp4文件的extradata的部分数据extradata 数据详细分析跳过前 4 个字节第5个字节 ff 的后2位用

2020-07-27 21:40:51 1369

原创 抽取音频数据

从.mp4文件中抽取音频数据流流程1、打开.mp4格式多媒体文件2、创建并打开一个空文件存储AAC数据3、循环读取流中AVPacket 包,为每个添加ADTS头,处理完后写入输出文件保存关于AAC的ADTS头详解可以参考:AAC的ADTS头解析相关API文件操作相关API源码:/**抽取音频数据*/#include <stdio.h>#include <libavformat/avformat.h>#include <libavutil/log.h

2020-07-27 21:40:33 368

原创 FFMpeg AAC编码

FFMpeg AAC编码流程:添加头文件注册编解码器,avcodec_register_all()通过编解码器名找到编解码器,avcodec_register_all()设置参数,打开编码器,avcodec_open2()获取数据,进行编码。相关API文件操作相关API源码#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <libavcodec/avco

2020-07-27 21:39:54 802

原创 FFMpeg视频转图片

FFmpeg 视频转图片流程:1、找到视频流信息2、初始化解码器上下文,并将流中解码器参数拷贝给解码器上下文3、打开解码器4、转换像素格式5、循环读取视频数据包并对数据进行解码avcodec_send_packet()/avcodec_receive_frame();6、将解码后的数据帧转成 RGB 数据,并保存相关API文件操作相关API源码#include <stdio.h>#include <stdlib.h>#include <string.

2020-07-27 21:38:36 784

原创 FFmpeg 中级开发内容介绍

FFmpeg 处理音视频流程

2020-07-27 21:37:33 141

原创 FFmpeg H264编码

FFmpeg进行h264的编码流程:1、通过编码器名,查找编码器(h264编码器名字是libx264)2、设置编码器的参数(比如码率、分辨率、帧率、时间基等)。3.打开编码器avcodec_open2()。4.对帧数据进行编码avcodec_send_frame()/avcodec_receive_packet(),编码完后写入文件。(在实际使用中帧数据来源于解码后的元数据或来源于摄像头,本文示例的帧数据时人工添加了模拟数据。)相关API文件操作相关API源码:#include &lt

2020-07-27 21:37:10 2376 1

原创 FFmpeg 视频编解码基本概念

SPSH264 Profile对视频压缩特性的描述,Profile越高,就说明采用了越高级的压缩特性H264 Profile(一)H264 Profile(二)H264 LevelLevel 是对视频的描述,Level 越高,视频的码率,分辨率、fps(帧率)越高SPS重要参数分辨率相关宏块默认 16 * 16帧相关帧数 :log2_max_frame_num_minus4参考帧数:max_num_ref_frames显示帧序号:pic_order_cnt_type

2020-07-27 21:36:32 680

原创 RTMP协议

RTMP 基本概念RTMP 创建流的基本流程Socket 建立 TCP 连接RTMP 握手建立 RTMP 连接创建 RTMP 流RTMP 协议中的握手RTMP 真实的握手建立RTMP连接RTMP真的连接创建RTMP流协议中RTMP流的创建真实创建RTMP流推RTMP流播RTMP流RTMP消息RTMP消息格式...

2020-07-27 21:35:29 108

原创 H264编码原理

H264压缩比条件:1.YUV 格式为 YUV4202.分辨率为 640 * 4803. 帧率为15未编码视频的YUV码流(比特):640 * 480 * 1.5 * 15 * 8 = 55296000 约等于 55 M(640 * 480)H264建议码流 : 500kpbs建议码流参考压缩比:约1/100GOP强相关的一组帧GOP中帧与帧之间的差别小I/P/B帧编码帧的分类I帧(intraframe frame),关键帧,采用帧内压缩技术,IDR帧属于I帧p帧

2020-07-27 21:34:50 259

原创 视频基础知识

采集音频的步骤注册设备设置采集方式 avfoundation(mac)/dshow(windows)/alsa(Linux)打开音频设备相关APIav_read_frameAVFormatContext : 上下文AVPacket :压缩后的包datasize返回值为 0 表示成功AVPacket 相关av_init_packet :对AVPacket 初始化av_packet_unref :释放资源av_packet_alloc:分配AVPacket 空间,

2020-07-27 21:34:14 196

原创 音频基础知识

声音的三要素音调:音频的快慢,频率越高音调越高音色:谐波音量:振动的幅度,幅度越大,音量越大PCM和WAV音频原始数据格式PCM:纯音频数据,没有任何音频格式WAV:存储原始数据或压缩数据,在PCM文件前加一个头,包含了一些基本信息量化基本概念采样大小:一个采样用多少bit存放。常用的是16bit,能够表述的数值的最大范围值。采样率:采样频率 8k、16k、32k、44.1k、48k,声道数:单声道(1)、双声道(2)、多声道(立体声)PCM音频流码流 = 采样大小 * 采

2020-07-27 21:33:33 820

原创 Linux 基本指令

基本指令 vim filename :创建文件,并进入编辑 I :切换到编辑模式 esc : 命令模式 :w :保存 :q :退出 :wq :保存并退出 cat filename :查看文件内容 yy :拷贝一行 yw :拷贝一个词 p : 粘贴 dd :删除一行 dw :删除一个词 h : 光标向左移 j :光标向下移 k :光标向上移 l :光标向右移 /关键字 :查找关键字 %s/关键字/替换字/gc :查找与替换 split/vsplit :分窗口 ww/

2020-07-27 21:33:08 85

原创 FFmpeg 视频截取

视频截取步骤1、打开输入文件2、创建并打开一个空文件存储 flv 格式音视频数据3、遍历输入文件的每一路流,每个输入流对应创建一个输出流,并将输入流中的编解码参数直接拷贝到输出流中。4、写入新的多媒体文件的头5、快进视频流到要截取的时间6、在循环遍历输入文件的每一帧,对每一个packet进行时间基的转换7、将处理好的pkt写入输出文件8、超过要结束的时间跳出循环9、写入新的多媒体文件尾10、释放相关资源源码:#include "SeekVideo.h"#include <st

2020-07-27 21:32:35 704 1

原创 FFmpeg 初级开发基础介绍

常用APIav_register_all():将FFmpeg所定义的编解码库,格式库,协议库,都注册到项目中int avformat_open_input(AVFormatContext **ps, //上下文指针const char *url,//要读取文件地址AVInputFormat *fmt, //文件格式,一般根据文件地址后缀,自动识别AVDictionary **options); //附加信息 :打开一个多媒体文件,根据文件的后缀名,识别对媒体文件格式,输出格式上下文AVForma

2020-07-27 21:31:59 125

原创 FFmpeg 常用命令

1. 基本信息查询命令FFMPEG 可以使用下面的参数进行基本信息查询。例如,想查询一下现在使用的 FFMPEG 都支持哪些 filter,就可以用 ffmpeg -filters 来查询 -version -------显示FFmpeg版本 -formats-------显示可用的格式(包括设备) -demuxers---- 显示可用的demuxers。 -muxers -------显示可用的muxers。 -devices ------显示可用的设备。 -codecs -------

2020-07-27 21:31:30 454

原创 FFmpeg下载、编译、安装

1、FFmpeg 下载、编译、安装1.1、下载新建个目录下载 FFMpeg 源码下载命令:git clone https://git.ffmpeg.org/ffmpeg.gitlibavformat 用于各种音视频封装格式的生成和解析libavutil 包含一些公共的工具函数;libavcodec 用于各种类型声音、图像编解码;libavdevice 对音视频设备做处理,采集libavresample 对音频重采样libavfilter 滤镜处理libswresample 用于视频

2020-07-27 21:30:59 1026 1

原创 (二)(2)OpenGL绘制方形,方向键控制其走向

一、主要流程主要需实现两部分1)正方形绘制2)键盘方向键控制正方形走向,并处理好边缘问题正方形绘制定义顶点要坐标轴的距离GLfloat blockSize = 0.1f;定义正方形4个顶点坐标GLfloat vVerts[] = { -blockSize,-blockSize,0.0f, blockSize,-blockSize,0.0f, blockSize,blockSize,0.0f, -blockSize,b

2020-07-07 17:44:42 867

原创 (一)(2)OpenGL入门---Open GL常用名词解读

1、图像APIOpenGL (OpenGraphics Library)是一个跨编程语言,跨平台的编程图形程序接口,它将计算机的资源抽象称为一个个OpenGL的对象,对这些资源的操作抽象为一个个的OpenGL指令。Openg ES(OpenGL for Embedded Systems)是OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,去除了许多不必要和性能较低的API结构DirectX 是由很多API组成的,DirectX 并不是一个单纯的图像API。最重要的是Di

2020-07-03 17:15:14 1169

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除