一、概述

1.1 前言

在上一篇文章我们讲了Y420P视频数据如何裁剪、拼接、旋转等,但是缺点也很明显,一是工作量大,代码量较大。二是容错率低,因为涉及到大量的浮点型计算,导致在数据拷贝的时候存在误差,可能渲染的时候Y、UV分量就产生问题,视频花屏、变形等。同时,YUV数据拷贝和计算的过程都是交给CPU进行,效率较低。

而这篇文章我们采取另外一种更优方式,利用 opengl 顶点和纹理坐标做文章,变换坐标确定视频块播放位置,代码量更少、容错率极高,易理解。

1.2 概念讲解

1.2.1 顶点数组与顶点坐标

顶点数组是OpenGL 1.1所提供的功能,在绘制各种图形时指定了数据渲染的坐标,表示了一个几何图形。为了避免跑偏,我们不过多的解释opengl相关知识。我们只需要知道我们在文章中是怎么使用顶点数组以达到我们的目的。简单说,顶点数组就是定义一个包含一系列坐标点的数组,opengl其实就是基于顶点的网格绘制,几何图形就是将这些顶点按照一定规则连接起来,那么纹理坐标的4个坐标点,映射到顶点上,openGL就会把这个纹理应用到4个顶点构成的图形上。

如上图所示,图1称为顶点坐标,图2称为纹理坐标,opengl为了显卡计算方便ÿ

QT利用opengl 进行视频裁剪、拼接,4宫格,9宫格相关推荐

  1. Qt利用openGL绘制三棱锥

    直接上代码: Pro中添加QT += core gui openglwin32:LIBS+=-lOpengl32\-lglu32 \-lglutmainwindow.h中添加:#include < ...

  2. php封装多段mp4,解决ffmpeg将多段视频裁剪拼接后卡顿现象

    合并 将下载的ts流名称按照顺序记录在一个txt文件中,然后使用命令 ffmpeg.exe -f concat -i ./your.txt -c copy ./output.mkv ffmpeg.ex ...

  3. ffmpeg 将一个视频裁剪多个部分,然后合并所有的裁剪为一个视频

    如果你想利用 ffmpeg 将一个视频裁剪为多个部分,然后合并所有的裁剪为一个视频, 那么你可以执行 : ffmpeg -i input -filter_complex "[0:v:0]se ...

  4. android 美颜录像,Android 关于美颜/滤镜 利用PBO从OpenGL录制视频

    前言 上次我写了一遍文章<Android 关于美颜/滤镜 从OpenGl录制视频的一种方案>,里面利用ImageReader来从获取Surface上获取数据,但是经过@熊皮皮的提醒,我发现 ...

  5. IOS视频编辑,视频裁剪,视频拼接,音频处理,视频处理

    前言 用代码在简单视频编辑中,主要就是加美颜.水印(贴图).视频截取.视频拼接.音视频的处理,在美颜中,使用GPUImage即可实现多种滤镜.磨皮美颜的功能,并且可以脸部识别实时美颜等功能,这个有很多 ...

  6. android 视频美颜代码,Android 关于美颜/滤镜 利用PBO从OpenGL录制视频

    前言 上次我写了一遍文章<Android 关于美颜/滤镜 从OpenGl录制视频的一种方案>,里面利用ImageReader来从获取Surface上获取数据,但是经过@熊皮皮的提醒,我发现 ...

  7. 空草子·如何利用QT和opengl进入幻想乡

    一个优秀的程序员可以赋予人无尽的幻想与深思,也让人们难以抑制从内心深处迸发的感动.         他们制造着幻想与华鸟风月之美,制造着只有那里才有的误会.和解与真实.         虚幻的东西反而 ...

  8. IOS视频编辑功能详解下篇-视频裁剪、视频拼接、音视频的处理

    转自:http://www.hudongdong.com/ios/550.html 前言 用代码在简单视频编辑中,主要就是加美颜.水印(贴图).视频截取.视频拼接.音视频的处理,在美颜中,使用GPUI ...

  9. QT界面中实现视频帧显示的多种方法及应用

    QT界面中实现视频帧显示的多种方法及应用 (一) 引言 1.1 视频帧在QT界面中的应用场景 1.2 不同方法的性能和适用性分析 1.2.1 使用QLabel和QPixmap 1.2.2 使用QPai ...

最新文章

  1. Linux环境下服务器 Tomcat war包部署步骤
  2. 泰坦尼克号 数据分析_第1部分:泰坦尼克号-数据分析基础
  3. 一行python代码值多少钱_一行python代码
  4. Ubuntu 20.04 更新,界面美化及安装搜狗输入法
  5. web driver selenium 操作滚动条
  6. MSDN MTBETA
  7. linux 坏块,如何在Linux中检查硬盘上的坏扇区或坏块
  8. 谷歌浏览器翻译设置_谷歌翻译网站最近有点“小脾气”
  9. 为什么会存在乱码?什么是编解码?为什么会有这么多字符集?
  10. lookup-method方法理解
  11. python tcp socket.connect() [Errno 56] Socket is already connectedconnect
  12. 计算机为啥启用不了网络发现,Win7“网络发现”功能启用不了的原因和解决方法...
  13. 【SikuliX】基于图像识别的Web自动化测试
  14. Error installing to Instantiated: name=AttachmentStore state=Described
  15. Unity 场景光照出现问题
  16. 神兽麒麟kylin驾驭指南
  17. c语言学生作业ppt课件怎么做,C语言课件完整版(精华).ppt
  18. Base64转码过程
  19. “醒醒吧,世界上有技术驱动型公司!”
  20. 数据库读写分离的理解

热门文章

  1. java计算机毕业设计基于springboot 医院急诊挂号系统
  2. Django微信小程序后台开发教程
  3. 安装gitlab遇到的大坑!!!
  4. HTML+CSS自学笔记
  5. 【Linux】Docker入门
  6. U盘无法识别,在别人电脑能使用,自己无法使用
  7. idea配置jdk和tomcat
  8. 《新婚姻法》是不是让女人很没安全感?
  9. 米哈游 2020 年实习生招聘笔试编程题1——最大不相交连线数
  10. Rust crates源国内加速镜像配置说明