FFmpeg的基本结构

FFmpeg框架可以简单分为两层,上层是以ffmpeg、ffplay、ffprobe为代表的命令行工具;其底层支撑是一些基础库,包含AVFormat、AVCodec、AVFilter、AVDevices、AVUtils等模块库。

常用函数如下:

1. AVFormat

封装/解封装模块

|------------------------------------|----------------------------------|
| avformat_open_input() | 打开输入媒体文件或流,读取文件头并初始化相关信息。 |
| avformat_find_stream_info() | 查找媒体流的信息,如音视频流的参数、编解码器等。 |
| avformat_close_input() | 关闭输入文件并释放相关资源。 |
| avformat_alloc_output_context2() | 为输出文件分配格式上下文。 |
| avio_open() | 打开一个输出流或文件进行写入操作。 |
| avformat_write_header() | 向输出文件写入头部信息(如流信息、编码设置等)。 |
| av_write_frame() | 向输出文件写入音频或视频数据帧。 |
| av_write_trailer() | 向输出文件写入尾部数据(如流结束标记)。 |
| avformat_new_stream() | 在 AVFormatContext 中创建一个新的音视频流。 |
| avformat_get_stream_info() | 获取流信息,通常在读取文件后调用,提供音视频流的详细数据。 |
| av_read_frame() | 从输入文件中读取一个数据包(音频或视频帧)。 |
| av_seek_frame() | 在输入媒体文件中定位到特定的时间点或帧。 |
| avformat_seek_file() | 在文件中根据时间戳进行精确查找。 |
| av_strerror() | 获取错误码的详细描述信息。 |

2. AVCodec

编/解码模块

|----------------------------|----------|
| avcodec_register_all() | 注册所有解码器 |
| avcodec_find_decoder() | 查找解码器 |
| avcodec_find_encoder() | 查找编码器 |
| avcodec_alloc_context3() | 分配解码器上下文 |
| avcodec_open2() | 打开解码器 |
| avcodec_close() | 关闭解码器 |
| avcodec_receive_frame() | 接收解码后的帧 |
| avcodec_send_packet() | 发送编码数据包 |
| avcodec_encode_video2() | 编码视频帧 |
| avcodec_receive_packet() | 获取编码数据包 |

3. AVFilter

滤镜模块

|----------------------------------|---------|
| avfilter_register_all() | 注册所有滤镜 |
| avfilter_graph_alloc() | 分配滤镜图 |
| avfilter_graph_free() | 释放滤镜图 |
| avfilter_graph_config() | 配置滤镜图 |
| avfilter_graph_create_filter() | 创建滤镜 |
| avfilter_link() | 连接滤镜 |
| avfilter_graph_parse() | 解析滤镜链描述 |
| avfilter_graph_parse_ptr() | 解析滤镜链指针 |
| avfilter_init_dict() | 初始化滤镜字典 |
| av_buffersrc_add_frame() | 向源滤镜添加帧 |

4. AVDevice

设备模块

|----------------------------------|----------|
| avdevice_register_all() | 注册所有设备 |
| avdevice_capabilities_create() | 创建设备能力列表 |
| avdevice_find_input_format() | 查找输入设备格式 |
| avdevice_find_output_format() | 查找输出设备格式 |
| avdevice_list_devices() | 列出设备信息 |
| avdevice_input_create() | 创建输入设备 |
| avdevice_output_create() | 创建输出设备 |
| avdevice_set_input_format() | 设置输入设备格式 |
| avdevice_set_output_format() | 设置输出设备格式 |

5. swscale

图像转换模块

|------------------------------|----------|
| sws_getContext() | 创建转换上下文 |
| sws_scale() | 执行图像转换 |
| sws_freeContext() | 释放转换上下文 |
| sws_isSupportedInput() | 检查输入格式支持 |
| sws_isSupportedOutput() | 检查输出格式支持 |
| sws_setColorspaceDetails() | 设置色彩空间转换 |

6. swresample

音频转换模块

|-------------------------|-----------|
| swr_alloc() | 分配重采样上下文 |
| swr_alloc_set_opts() | 设置重采样选项 |
| swr_init() | 初始化重采样上下文 |
| swr_convert() | 执行音频重采样 |
| swr_free() | 释放重采样上下文 |
| swr_get_out_samples() | 获取输出样本数 |
| swr_get_delay() | 获取延迟值 |

7. postproc

视频后处理模块

|----------------------|----------|
| pp_get_context() | 创建后处理上下文 |
| pp_free_context() | 释放后处理上下文 |
| pp_postprocess() | 执行后处理操作 |
| pp_set_parameter() | 设置后处理参数 |
| pp_get_parameter() | 获取后处理参数 |
| pp_init() | 初始化后处理 |
| pp_close() | 关闭后处理 |
| pp_apply_filter() | 应用后处理滤镜 |

相关推荐
王者鳜錸1 小时前
基于Selenium和FFmpeg的全平台短视频自动化发布系统
selenium·ffmpeg·音视频
aqi002 小时前
FFmpeg开发笔记(七十三)Windows给FFmpeg集成MPEG-5视频编解码器
ffmpeg·音视频·直播·流媒体
DogDaoDao1 天前
HEVC/H.265 码流分析工具 HEVCESBrowser 使用教程
ffmpeg·音视频·h.265·hevc·码流分析工具·elecard·hevcsbrowser
hjjdebug3 天前
ffplay6 播放器关键技术点分析 1/2
c++·ffmpeg·音视频
泰勒朗斯3 天前
ffmpeg 中config 文件一些理解
windows·microsoft·ffmpeg
泰勒朗斯3 天前
ffmpeg下编译tsan
ffmpeg
xmode5 天前
centos7.9安装ffmpeg6.1和NASM、Yasm、x264、x265、fdk-aac、lame、opus解码器
ffmpeg·centos
王江奎5 天前
FFmpeg 升级指北
ffmpeg
雨夜和阳晨5 天前
FFmpeg录制屏幕及声音
ffmpeg
吴声子夜歌5 天前
FFmpeg——基础知识及FFmpeg框架
ffmpeg