您的位置:首页 > 其它

图像视频编码和FFmpeg(5)-----FFmpeg关键结构体的关系和编解码的基本过程

2014-05-25 21:06 225 查看
之前都没怎么讲和使用FFmpeg,现在开始来讲一下FFmpeg。

下面列出了使用FFmpeg时会用到的一些比较重要的结构体和他们之间的关系




每一个结构成员的解释和使用,可以分别查看一个博客FFmpeg学习资料,我这里就不说了。

无论是编码还是解码,***CodecContext都是一个关键结构,它指明了编码类型和对应的编/解码器。我们必须手动为它设定编解码器。



下面说一下编解码的过程。

编码:

1. 初始化***FormatContext,即获得格式上下文的信息。这个很多重要。

2. new一个***Stream结构,从而获得***CodecContext结构。

3. 对***CodecContext结构进行设置。比如设置分辨率、帧率、码率等东西。在后面的编码中,会根据这里的设置进行处理的。

4. 查找对应格式的编码器。

5. 分配一个***Frame结构保存将要编码的图像。

6. 用编码器编码并写入视频文件中。



解码:

1. 利用视频名获得并初始化***FormatContext结构。

2. 通过***FormatContext结构得到***Stream结构(在前面的关系图中可以看到他们之间的联系),并进一步得到***CodecContext。

3. 查找对应视频格式的解码器。

4. 分配***Packet结构用来存放视频数据,并分配一个***Frame结构用于保存解码后的图像。

5. 从视频文件中读取数据,并放到***Packet中。

6. 解码器解码并存放到***Frame中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: