以前公司每年都有年底总结,来新公司没有了年底总结,总觉得缺点什么,公司没有就自己写吧,人生感悟在这里就不多说了,本篇主要总结一下这一年来知识点吧。
这些知识点,每个慢慢整理,将来要保证,每个模块在1h内快速恢复到可以基本掌握的程度。
1、思维导图
感觉这里画图不好,所以,在其它地方画吧。
文章目录
-
- [1 FFmpeg](#1 FFmpeg)
-
- [1 基础组件1](#1 基础组件1)
- 2.基础组件2
- [3. AVCodec组件](#3. AVCodec组件)
- 4.AVFORMAT
- 5.AVFilter
- 2.Gstreamer
- 3.编解码
- 4.容器格式
- 5.网络协议
- 5.流媒体
- 6.网络协议
- 7.高并发服务器开发
- 8.深度学习
- 9.设计模式
- 10.C++基础知识
-
- [1.C++ 基础](#1.C++ 基础)
- [2.C++ 11](#2.C++ 11)
- [3.C++ 17](#3.C++ 17)
- [4.C++ 模板编程](#4.C++ 模板编程)
- 5.Linking与Loading
- 6.C++对象模型
- [11.Linux 内核](#11.Linux 内核)
- [12 数据结构](#12 数据结构)
1 FFmpeg
本段主要从ffmpeg代码架构记录,目前只是搭建一个框架,后期慢慢的去完善。
1 基础组件1
下面这些是ffmpeg的基础组件,作为最重要的两个数据存储元素,这单独列出来。
列出来的原因主要有:
1)两个组件通过原子引用计数自己实现了一套垃圾回收机制。
2)提供了非常多的接口函数去操纵,只有你想不到的,没有它做不到的。
核心就这两点吧,在使用的时候不要私自引用它们内部的成员变量,最终造成内存泄漏,后悔终生。
2.基础组件2
这里其实是FFmpeg内的组件,也就是说,不对用户开放,但是对于ffmpeg二次开发却很有用,所以也列了出来。
AVBufferPool是一个可以自销毁的内存池,可以用来在host或者在device上提前创建一些内存池,在使用的时候直接从其中获取数据。
2-AVthreadPool
除了内存池外,当然还有线程池。
3-AVDictionary
ffmpeg设置参数的架构很巧妙,值得你深入了解
4-AVMd5
5-AVFifoBuffer
3. AVCodec组件
解码模块算是FFmpeg最重要的一个模块了,但是在介绍解码模块的时候,我们先提前介绍两个它的辅助模块。
其中AVcodecParser主要用来解析码流的元数据,比如sps,pps等。
AVBSF作为码流过滤器,可以在这里对即将要解码的码流做一些处理,比如头格式的转换等等。
4.AVFORMAT
avformat是ffmpeg用来处理输入和输出流的最重要的一个模块,可以说,市面上90%的网络协议,封装格式,它都支持,算是一个比较好的播放器吧。
5.AVFilter
ffmpeg的滤镜模块大概有200多个的,可以说是包罗万象,并且使用起来非常简单。如果说它的难度是5,那么gstreamer绝对是12地狱级别的难度。
1-AVFilterGraph-AVFilterCommand
2- AVFilterInOut
这个模块是个辅助链接模块,懒得写了
2.Gstreamer
这个框架比较难,前期看了很多,但是可惜没有做笔记,基本忘了,这次要补上。
3.编解码
本小结主要介绍h264和h265两种压缩编码相关的内容,
以前觉得没什么用,但是不然,看很多公司对这一块要求挺高,所以这里是一个重点
1.H264编解码原理(x264)
H264主要依赖于毕厚杰的《新一代视频压缩编码标准》
https://zhuanlan.zhihu.com/p/500538442
https://zhuanlan.zhihu.com/p/158392753
2.H265编解码原理(x265)
H265主要依赖万帅《新一代高效视频编码h265原理标准和实现》
4.容器格式
容器格式必须要掌握的三个是flv,mp4,ts,
1.flv
2.mp4
3.ts
5.网络协议
时间久了不用,基本忘得都差不多了,还是要捡起来。
1.RTSP
2.RTMP
3.HTTP-FLV
4.WebRtc
5.GB/T28181(SIP)
4.HLS(ts)
5.流媒体
前面提到ffmpeg,最为最好的流媒体客户端,那么我们还要熟知流媒体服务器,当然掌握流媒体服务器不是一件容易的事情,不过好处在于,鄙人熟悉几个,这里罗列出来,主要是防止自己再忘了。
1.ZlmediaKit
2.SRS
3.Live555
4.OBS
6.网络协议
1.TCP/IP
2.UDP
7.高并发服务器开发
因为这些都是以前吃饭的家伙,还是不能丢掉,要捡起来。
1.nginx
要配合《深入理解Ngingx》
2.mudo
要配合《Linux 多线程服务端编程》
3.Http
要配合《Http服务器》
4.各类服务器编程架构
要配合书《面向模式的软件架构并发和互联网对象模式》
8.深度学习
这一块花费了老子很多时间,然而卵都没有用上,目前要保持最熟悉的一本书。
《深入浅出神经网络与深度学习》
9.设计模式
24种设计模式
10.C++基础知识
1.C++ 基础
2.C++ 11
3.C++ 17
4.C++ 模板编程
5.Linking与Loading
6.C++对象模型
主要应对虚函数表等相关问题
11.Linux 内核
1.操作系统真相还原
2.Linux内核设计与实现
3.Linux设备驱动开发详解
12 数据结构
各类基础算法