欢迎光临散文网 会员登陆 & 注册

第二篇 FFmpeg转码流程、工作原理

2022-08-03 11:32 作者:青泉石上_  | 我要投稿

昨天舞台叙事的原创文字,不给审核通过,b站HR说我们这些用户是loser,我也没办法咯。


3. FFmpeg转码流程、工作原理及相关术语

3.1 文件转码流程:

解封装Demux ——> 解码Decode ——> 编码Encode ——> 封装Mux



3.2 相关术语

3.2.1 封装格式转换:解封装Demux与封装Mux(无编解码/转码)

封装(Container)见上文2.2.1称为容器。https://www.bilibili.com/read/cv14517014


3.2.1.1 封装,还称为多路复用(Mux)

封装的目的

1. 是为了在一个文件流(Stream)中能同时存储视频流(Video Stream)、音频流(Audio Stream)、字幕(Subtitle)、附件(t)、数据(d)等内容。这正是“复用”的含义所在(分时复用)。

2. 是在网络环境下确保数据的可靠快速传输。


3.2.1.2 封装格式转换

包括封装与解封装,复用(Mux)」与「解复用(Demux)」。

封装格式转换,就是在AVI,FLV,MKV,MP4这些格式之间进行转换(对应.avi/.flv/.mkv/.mp4后缀文件)。

  • 复用(Mux)」又称为封装

将多路流(视频、音频、字幕等),按照某种容器规则,混入一路输出中(普通文件、流等)。是multiplex的缩写。

  • 解复用(Demux)」又称为解封装

复用(Mux) 的反操作。从一路输入中,解析分离出多路流(视频、音频、字幕等)。

  • 复用(Mux)」处理的是输入格式,「解复用(Demux)」处理的输出格式。


3.2.1.3 封装格式转换工作原理图

封装格式转换工作原理

封装格式转换并不进行视音频的编码和解码工作。而是直接将视音频压缩码流,从一种封装格式文件中获取出来,然后打包成另外一种封装格式的文件。


3.2.1.4 封装格式转换特点:

  • 处理速度极快。视音频编解码算法十分复杂,占据了转码的绝大部分时间。因为不需要进行视音频的编码和解码,所以节约了大量的时间。

  • 视音频质量无损。因为不需要进行视音频的编码和解码,所以不会有视音频的压缩损伤。


3.2.2 编解码转换转码

使用FFmpeg对输入源处理,然后输出的过程叫做 

转码。转码可以改变文件格式,或者文件格式不变,只是更改其他数据。

编码的目的

为了压缩媒体数据。

有别于通用文件数据的压缩,在图像或音频压缩的时候,可以借助图像特性(如前后关联、相邻图块关联)或声音特性(听觉模型)进行压缩,可以达到比通用压缩技术更高的压缩比。


传统的编码转换程序工作原理图

传统的编码转换程序工作原理



3.3 转码步骤

1. Demuxer 解复用器 进行Demuxing 解封装:
FFmpeg根据输入源的文件扩展名,来选择最佳的解封装器:调用libavformat库(包含解复用器)读取 [输入文件(Input file)] ,解封装后生成 [包含编码数据的数据包(Encoded data packets)],即压缩状态的数据包。(文件file → 数据包data packets)2.2.5 「数据包(Packet)」

2. Decoder 解码器 进行Decoding解码 :
通过适当的解码器将步骤1里面的数据包解码为[未压缩的数据帧](原始视频/PCM音频/...),可以通过 ※过滤Optional filtering※ 进一步处理。(数据包data packages ——> 数据帧frames2.2.3 「帧(Frame)」

※ Optional filtering可选的滤镜:通过指定的滤镜修改解码后的数据帧。(修改数据帧)

如果使用-c copy或-codec copy,将不会有解码这个步骤,也就不会有下面的编码步骤。

3. Encoder 编码器 进行Encoding编码:
通过指定编码器,对其进行编码,将数据帧编码输出为[编码后的数据包(Encoded data packets)]。(数据帧frames ——> 数据包data packages

4. Muxer 复用器 进行Muxing封装:
将[编码的数据包]封装为指定的媒体格式[输出文件(Output file)]。(数据包data packages ——> 文件file



  • FFmpeg相关术语中易混淆的概念(下一次详细讲)

自行思考「文件格式(File Format)」与「封装格式(Container Format)」的区别

附上一张图片

FFmpeg 流程文件格式和封装格式的区别


第二篇 FFmpeg转码流程、工作原理的评论 (共 条)

分享到微博请遵守国家法律