![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
音视频系统学习的浪漫马车
文章平均质量分 94
从零开始记录并阐述个人学习音视频开发的所学所思所想,计划今年6份开始系统编写本专栏博文,希望大家一起出发,感受这一次的浪漫之旅吧~
半岛铁盒里的猫
一个热爱足球和音乐,带有一定程度文艺气息的主流程序员。
展开
-
H264码流结构一探究竟
视频理论基础:视频基础知识扫盲音视频开发基础知识之YUV颜色编码解析视频编码原理——从孙艺珍的电影说起(一)解析视频编码原理——从孙艺珍的电影说起(二)上两篇博文解析H264视频编码原理——从孙艺珍的电影说起(一)解析H264视频编码原理——从孙艺珍的电影说起(二)已经比较详细地叙述了一个视频从原始的yuv数据流如何转化为一个H264码流,那么今天就来讲一讲整个过程的最终产物H264码流究竟是什么样子的。如果还没看过这两篇博文,建议先看一下,不然本文说的很多概念会不理解。如果你愿意一层一原创 2022-05-01 23:03:58 · 952 阅读 · 0 评论 -
解析视频编码原理——从孙艺珍的电影说起(二)
上一篇博文简单介绍了H264历史背景,并着重介绍了H264中的帧内帧间预测,今天继续讲解H264编码剩余部分——变换量化、熵编码。原创 2022-04-04 14:45:32 · 1214 阅读 · 0 评论 -
解析视频编码原理——从孙艺珍的电影说起(一)
更多博文,请看音视频系统学习的浪漫马车之总目录今天开始讲下视频编码技术,这里的编码可以理解为压缩,当然由于笔者不才,对视频具体压缩算法只是略知一二,自然不能写出来误人子弟,所以这里标题用的是“浅尝”,确实是浅尝,今天只打算将视频编码技术的思路讲一下,当然,虽然是浅尝,不代表对以后的开发没用,编码思路是基础,只有熟悉编码的思路,才能做好开发,不清楚编码过程的思路,是无法做好视频方面的开发的。上一篇音视频开发基础知识之YUV颜色编码 我们已经知道在视频中的像素是如何表示的,那么我们假设有一个电影视频,分辨原创 2022-03-19 21:31:20 · 3622 阅读 · 0 评论 -
视频基础知识扫盲
更多博文,请看音视频系统学习的浪漫马车之总目录之前几篇博文已经把C、C++、ndk的基础打得差不多了,从今天开始,将进入音视频的理论部分,今天就开始从视频最基础的知识讲起。原创 2022-03-02 23:00:26 · 605 阅读 · 0 评论 -
初探ndk的世界(二)
上一篇[初探ndk的世界(一)](https://blog.csdn.net/sinat_23092639/article/details/122314100?spm=1001.2014.3001.5501)主要介绍了ndk的背景和java和C++如何交互,如果还没看过上一篇,那最好先看一下,因为这一篇将继续上一篇没有讲完的ndk话题,让我们对ndk的世界接触得更加旷阔一点。原创 2022-02-12 22:36:02 · 1668 阅读 · 0 评论 -
初探ndk的世界(一)
上一篇文章[升级构建工具,从Makefile到CMake](https://blog.csdn.net/sinat_23092639/article/details/122275101?spm=1001.2014.3001.5501) , 我们已经学习了现代化构建项目的脚本CMake,打了半年基础,不容易,终于可以开始摸到正题的影子了,今天开始讲ndk开发。原创 2022-01-30 11:33:32 · 4409 阅读 · 1 评论 -
升级构建工具,从Makefile到CMake
更多博文,请看音视频系统学习的浪漫马车之总目录上一篇文章一篇文章入门C/C++自动构建利器之Makefile介绍了构建项目的脚本工具Makefile,相比于手动执行gcc命令来说,已经方便了太多了。不过如果只用Makefile构建项目,会有一个问题,那就是不支持跨平台的问题,因为Makefile脚本中的命令是和具体平台绑定的,比如上篇文章就是用GNU的gcc命令,那如果项目要移植到其他不能使用gcc命令的平台,那又要重新写一套Makefile,这可不符合懒惰的程序员群体,所以支持跨平台语法又更简洁的CMa原创 2022-01-03 19:08:50 · 3081 阅读 · 1 评论 -
一篇文章入门C/C++自动构建利器之Makefile
更多博文,请看音视频系统学习的浪漫马车之总目录Makefile简介上一篇浅析C/C++编译本质已经比较详细地介绍了C/C++编译的流程和初步探讨了编译过程中底层的一些细节,可能各位已经发现,即使文章中的Demo很小,但是每次修改源码之后都要调用g++命令再重新链接一次,改了几次之后就有点吃力了,假如遇到大型项目,这样一个个调用g++(gcc)编译命令,那有点一顿操作猛如虎,结果什么的那味么。。我们程序员总是很喜欢偷懒的,总是希望能交给机器的事情觉得不自己亲自处理,所以编译也是一样,我们要的是告诉机器一原创 2021-12-26 23:23:19 · 1814 阅读 · 0 评论 -
浅析C/C++编译流程
该系列前面的文章已经讲了C语言和C++的一些重点难点,从本篇博文开始将开始探索C/C++编译体系(不仅仅像其他很多文章一样只讲那四个主要流程,还会更深入讲链接的本质)以及内存模型相关的内容,从编译体系继而将讲解MakeFile以及cmake的内容,而这些内容,将为以后做音视频开发编译第三方库打下坚实的基础~~原创 2021-12-18 21:35:48 · 2082 阅读 · 1 评论 -
感受C++一些令人眼前一亮的语法
上一篇进一步走进C++面向对象的世界 比较详细阐述了C++中继承和多态、虚函数相关的分析,面向对象的内容就基本结束,这一篇是C++语法的最后一篇博文,讲介绍C++一些常见的语法以及它们背后的思想和使用场景,这些语法,为后起之秀的语言们提供了深厚的语法基础。原创 2021-11-27 23:06:18 · 1864 阅读 · 2 评论 -
进一步走进C++面向对象的世界
更多博文,请看音视频系统学习的浪漫马车之总目录上一篇初尝C++的世界 虽然讲的很长,但是如同题目写的“初尝”一般,写的比较蜻蜓点水,简单讲了C++与C语言的一些不同点,这一篇将针对C++类与对象,更深入探讨继承、多态以及其内存原理等内容。关于继承,C++程序员肯定是信手拈来了。 所谓继承,就是一个类从另一个类演化而来,在原来的类基础上添加一些成员和方法,并能访问原来的类中的成员和方法,被继承的类叫做父类或者基类,继承的类叫做子类或者派生类。继承的作用从代码角度来说就是实现了代码的复用,父类的代码可以被多原创 2021-11-09 22:59:44 · 1341 阅读 · 0 评论 -
初尝C++的世界
c++简介c++与C的不同点:内联函数const变量引用类对象this指针静态成员、函数const成员、函数class和struct区别继承权限名字屏蔽构造函数、析构函数多态运算符重载模板进阶内存模型原创 2021-09-11 21:38:52 · 486 阅读 · 0 评论 -
漫谈C语言指针(三)
上一篇漫谈C语言指针(二) 主要讲了指针和数组的关系、字符串指针、指针变量作为函数参数,就像电影最后进入高潮一样,接下来,指针的内容将进入深水区,大家坐稳扶好,马上出发~今天要讲的内容有:二级指针、二维数组、指针数组、函数指针、函数指针数组、结构体指针。为什么说的深水区呢?因为前面的2篇只要看懂概念基本就能学会,但是这一章,概念开始变绕,不再平坦,甚至有点花俏,所以需要消费一些脑细胞才可以理解,不过不用担心,我对我的表达有自信(看不懂也勿喷。。)二级指针二级指针,顾名思义,就是指针的指针,一个指针指向原创 2021-07-18 21:36:33 · 330 阅读 · 0 评论 -
漫谈C语言指针(二)
更多博文,请看音视频系统学习的浪漫马车之总目录上一篇漫谈C语言指针(一)中主要讲了指针的基本概念相关以及基本使用,今天基于上一篇博文进一步讲下指针和数组的关系、字符串指针、指针变量作为函数参数、二级指针以及指针使用的一些花里胡哨的表达式的辨析。指针和数组数组是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素。数组中的所有元素在内存中是连续排列的,中间没有间隙的,整个数组占用的是一块内存。在C语言中,数组名可以转化为指向这个数组第0个元素的首地址的一个指针。所以遍历数组除了常用的:in原创 2021-07-17 18:05:10 · 449 阅读 · 5 评论 -
漫谈C语言指针(一)
什么是指针C语言里,指针一直是一个难点,初学者容易混淆的地方,但是指针本身其实很简单,指针就是一个存放整数的变量。C语言中,变量存放在内存中,而内存其实就是一组有序字节组成的数组,这些连续的字节从 0 开始进行编号,每个字节都有唯一的一个编号,这个编号就是内存地址。CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位。这里,数据对象是指存储在内存中的一个指定数据类型的数值或字符串,它们都有一个自己的地址,而指针便是保存这个地址的变量。也就是说:指针是一种保存变量地址的变量。如图为4GB原创 2021-07-12 17:22:52 · 675 阅读 · 2 评论 -
漫谈C语言内存管理
要学习音视频开发,首先C、C++是必备的编程语言,因为很多知名的音视频库,比如FFMPEG、X264等都是用C语言编写的,而我们要使用这些库就必须用C、C++去开发程序。C语言是一门怎样的语言呢?C语言是一门面向过程的编译型语言,它的运行速度极快,仅次于汇编语言。**C语言是计算机产业的核心语言,操作系统、硬件驱动、关键组件、数据库等都离不开C语言**;不学习C语言,就不能了解计算机底层。后来的很多语言(C++、Java等)都参考了C语言,说C语言是现代编程语言的开山鼻祖毫不夸张,它改变了编程世界原创 2021-07-10 14:20:42 · 2059 阅读 · 2 评论 -
音视频系统学习的浪漫马车之总目录
过去的一年,个人经历了很多事情,导致整个博客更新停滞了一年,今年,博客重新起航,并且重点将是音视频开发相关的系统博客系列,个人尽力将自己学习的知识以及学习过程的感悟和理解写在博客系列中,所谓独乐乐不如众乐乐,希望接下来至少一年的时间里,大家能够和我一同开启音视频开发的浪漫之旅,让音视频的马车带我们跑起来吧,以下是旅途计划站点(仅为大概,具体以实际更新为准)~首先是开胃菜,个人维护的一个音视频开源项目,系列文章讲到的知识点会运用到这个项目实战中,初学者可以通过此对音视频有点感觉,后续看系列文章也可以从该项目原创 2021-05-04 23:38:52 · 1197 阅读 · 0 评论 -
音视频开发基础知识之YUV颜色编码
YUV,是一种颜色编码方法。常使用在各个影像处理组件中。YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。比如移动端Camera拍照捕获的图像数据、直播推流的流数据都是用这种编码格式。Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma)相对我们都比较熟悉的编码格式RGB,RGB诉求于人眼对色彩的感应,YUV则着重于视觉对于亮度的敏感程度。 YUV在对照片或影片编码时,考虑到人类的感知能力,允许降低色度的带宽。换句话说,也就原创 2021-05-04 17:37:37 · 1053 阅读 · 1 评论 -
介绍一个自己刚出炉的安卓音视频播放录制开源项目
**回到主题,这篇文章主要是介绍一个自己刚出炉的音视频播放录制开源项目**:[UnitedPlayer](https://github.com/yishuinanfeng/UnitedPlayer)为什么叫做UnitedPlayer呢?因为我是一个17年的曼联球迷,曼联英文名为Manchester United,为了简单,我就叫做UnitedPlayer。简单介绍下,**这是一个支持录制和播放音频视频的应用,录制的视频将在播放列表中显示,点击列表项即可播放,并提供不同仿抖音滤镜特效。**原创 2020-02-02 11:56:11 · 1910 阅读 · 5 评论 -
Android平台上基于OpenGl渲染yuv视频
前言这是我音视频专栏的第一篇实例解析,也算是入门篇,重点讲下如何使用OpenGl去渲染一个yuv视频。本篇博文涉及的知识点主要有三个:1.yuv的概念 2.基于ndk进行C++程序的基本编写 3.OpenGl纹理的绘制本文将重点讲知识点1和3,ndk开发部分就不细谈,由于OpenGl知识体系庞大,本文也是根据重点来分析,所以如果没有ndk开发基础和OpenGl基础的读者看本文可能会比较困难......原创 2019-11-13 21:28:17 · 6210 阅读 · 14 评论 -
音视频开发入门之极简基础知识笔记
以下是我最学习音视频基础的笔记,不太详细,主要是自己方便以后查阅~播放器基础原理:封装格式: 将音频视频合在一起播放网上音视频: 解协议--解封装--音视频解码--音视频同步流媒体协议:客户端和服务器通信的协议封装格式:将视频码流和音频码流按照一定格式存储在一个文件中视频编码:将视频像素数据压缩为视频码流,以降低视频数据量音频编码:将音频采样数据压缩为音频码流音视...原创 2019-04-19 00:14:01 · 674 阅读 · 0 评论