0%

  • AVFormatContext : 封装格式上下文结构体,也是统领全局的结构体,保存了视频文件封装格式相关信息
  • AVInputFormat : 每种封装格式(例如 FLV, MKV, MP4, AVI)对应一个该结构体
  • AVStream : 视频文件中每个视频(音频)流对应一个该结构体
  • AVCodecContext : 编码器上下文结构体,保存了视频(音频)编解码相关信息
  • AVCodec : 每种视频(音频)编解码器 (例如 H.264 解码器) 对应一个该结构体
  • AVPacket : 存储一帧压缩编码数据
  • AVFrame : 存储一帧解码后像素(采样)数据

ffmpeg 是一个基于 ffmpeg 库的经典转码程序,几乎被所有的知名系统、软件工具、服务器后台等静默使用,通过命令行启动转码,这里主要以命令行语法讲解为主。

YUV 是一种彩色编码系统,主要用在视频、图形处理流水线中 (pipeline)。相对于 RGB 颜色空间,设计 YUV 的目的就是为了编码、传输的方便,减少带宽占用和信息出错。

人眼的视觉特点是对亮度更铭感,对位置、色彩相对来说不铭感。在视频编码系统中为了降低带宽,可以保存更多的亮度信息 (luma),保存较少的色差信息 (chroma)。

为了支持定时器,libevent 必须和系统时间打交道,z 在 event_add 时,用户制定了一个超时时间,这个超时时间是一个相对时间,但在 event_add 函数内部,libevent 将其转换为了绝对时间,这就带来了一个问题:在系统时间改变时,libevent 需要修改 event 的绝对时间,为此 libevent 内部有以下几种解决方案:

  1. 使用单调时间 monotonic time
  2. 使用系统时间生成 fake monotonic time
  3. 使用系统时间(已弃用)

由于最近更换电脑,需要将旧电脑的一些资料转移至新电脑,其中 Hexo 的资料转移过程中踩了不少坑,所以在此记录以下,防止后续换机时继续踩坑。

mp4 文件封装格式,对应的标准为 ISO/IEC 14496-12ISO/IEC 14496-14

ISO/IEC 14496-12 定义了一种封装媒体数据的基础文件格式,mp43gpismv 等我们常见媒体封装格式都是以这种基础文件格式为基础衍生的。

ISO/IEC 14496-14 基于 ISO-14496-12 定义了 mp4 文件格式。

TS 全称是 MPEG2-TSMPEG2-TS 是一种标准容器格式,传输与存储音视频、节目与系统信息协议数据,广泛应用于数字广播系统,我们日常数字机顶盒接收到的就是 TSTransport Stream,传输流)流。

Vim 是从 vi 发展出来的一个文本编辑器,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。

HLS 全称是 HTTP Live Streaming,是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输。目前 HLS 协议被广泛的应用于视频点播和直播领域。

内存泄漏一般是由于程序在堆上分配了内存而没有释放,随着程序的运行占用的内存越来越大,一方面会影响程序的稳定性,可能让运行速度越来越慢,或者造成 OOM,甚至会影响程序所运行的机器的稳定性,造成宕机。

而分析内存问题的常用工具有 valgrindgperftools 等,当然也可以自行开发钩子函数,本文主要介绍 gperftools 来进行内存泄漏的分析。