图像视频编码和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中。
下面列出了使用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中。
相关文章推荐
- 图像视频编码和FFmpeg(6)-----用FFmpeg编码和解码的例子
- FFmpeg - 视频解码过程
- FFMPEG中最关键的结构体之间的关系
- 使用ffmpeg视频编码过程中踩的一个坑
- FFMPEG中最关键的结构体之间的关系
- FFMPEG裁剪视频、提取某帧图像、合并视频和转换视频格式命令的基本用法
- 视频编解码---x264用于编码,ffmpeg用于解码
- 图像视频编码和FFmpeg(1)-----FFmpeg使用介绍
- FFMPEG中最关键的结构体之间的关系
- 图像视频编码和FFmpeg(3)-----用FFmpeg进行图像格式转换和AVFrame简介
- FFMPEG中最关键的结构体之间的关系
- FFMPEG中最关键的结构体之间的关系
- FFmpeg中最关键的结构体之间的关系
- FFmpeg中关键结构体之间的关系
- ffmpeg编码器+VS2008的环境配置以及视频编码过程详解
- ---WebCam网络摄像头12 ---图像编码解码,视频编码解码
- FFMPEG中最关键的结构体之间的关系
- FFMPEG中最关键的结构体之间的关系
- 关于视频的一些基本概念——视频格式、视频编码、压缩率的关系
- FFMPEG中最关键的结构体之间的关系