2023年-含泪总结

以前公司每年都有年底总结,来新公司没有了年底总结,总觉得缺点什么,公司没有就自己写吧,人生感悟在这里就不多说了,本篇主要总结一下这一年来知识点吧。

这些知识点,每个慢慢整理,将来要保证,每个模块在1h内快速恢复到可以基本掌握的程度。

1、思维导图

感觉这里画图不好,所以,在其它地方画吧。

思维导图入口


文章目录


1 FFmpeg

本段主要从ffmpeg代码架构记录,目前只是搭建一个框架,后期慢慢的去完善。

1 基础组件1

下面这些是ffmpeg的基础组件,作为最重要的两个数据存储元素,这单独列出来。

列出来的原因主要有:

1)两个组件通过原子引用计数自己实现了一套垃圾回收机制。

2)提供了非常多的接口函数去操纵,只有你想不到的,没有它做不到的。

核心就这两点吧,在使用的时候不要私自引用它们内部的成员变量,最终造成内存泄漏,后悔终生。

1-AVFrame

2-AVPacket

2.基础组件2

这里其实是FFmpeg内的组件,也就是说,不对用户开放,但是对于ffmpeg二次开发却很有用,所以也列了出来。

AVBufferPool是一个可以自销毁的内存池,可以用来在host或者在device上提前创建一些内存池,在使用的时候直接从其中获取数据。

1-AVBufferPool

2-AVthreadPool

除了内存池外,当然还有线程池。

3-AVDictionary

ffmpeg设置参数的架构很巧妙,值得你深入了解

4-AVMd5

5-AVFifoBuffer

3. AVCodec组件

解码模块算是FFmpeg最重要的一个模块了,但是在介绍解码模块的时候,我们先提前介绍两个它的辅助模块。

其中AVcodecParser主要用来解析码流的元数据,比如sps,pps等。

AVBSF作为码流过滤器,可以在这里对即将要解码的码流做一些处理,比如头格式的转换等等。

1-AVcodecParse

2-AVBSF

3-AVCodec

4-HWContextType

5-AVHWAccel

4.AVFORMAT

avformat是ffmpeg用来处理输入和输出流的最重要的一个模块,可以说,市面上90%的网络协议,封装格式,它都支持,算是一个比较好的播放器吧。

1-AVIOContext

2-AVIODirContext

3-AVIOPROBE

4-AVInputFormat

5-AVOutputFormat

6-调试打印函数族

7-RTP-SDP创建函数

8-其它辅助函数

5.AVFilter

ffmpeg的滤镜模块大概有200多个的,可以说是包罗万象,并且使用起来非常简单。如果说它的难度是5,那么gstreamer绝对是12地狱级别的难度。

1-AVFilterGraph-AVFilterCommand

2- AVFilterInOut

这个模块是个辅助链接模块,懒得写了

3-AVFilterLink

4-AVFilterPad

5-AVFilter-AVFilterContext

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 数据结构

各类基础算法

相关推荐
西岸行者3 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意3 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码3 天前
嵌入式学习路线
学习
毛小茛3 天前
计算机系统概论——校验码
学习
babe小鑫3 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms4 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下4 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。4 天前
2026.2.25监控学习
学习
im_AMBER4 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J4 天前
从“Hello World“ 开始 C++
c语言·c++·学习