FFmpeg的基本结构

devtools/2024/11/18 2:22:13/

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()应用后处理滤镜

http://www.ppmy.cn/devtools/134845.html

相关文章

如何在pytorch中建立叶子节点.

1 问题 为什么需要叶子节点? 2 方法 在Pytorch中,为了节省显存,引入了叶子张量的概念,在反向传播过程中,只有叶子张量的求导结果会被保存,因为其他的非叶子张量是由用户所定义的叶子张量的一系列运算所形成…

TCP(传输控制协议)和UDP(用户数据报协议)

TCP(传输控制协议)和UDP(用户数据报协议)作为互联网协议族中的两个核心传输层协议,各自提供了不同的服务,以满足不同应用场景的需求。 TCP提供的服务 可靠的数据传输: TCP通过序列号、确认应答…

[java] 2024--今日头条面试题及参考答案

前言 java今日头条面试题.pdf 链接:https://pan.quark.cn/s/cbb060a021a1 提取码:Xx1W 2024 Java面试宝典合集 链接:https://pan.quark.cn/s/3b5f78597c32 提取码:CHN1 MySQL 锁概述 相对其他数据库而言,MySQL 的锁…

详细分析ip addr show 查看网络配置的命令

目录 1. 基本知识2. Demo分析 1. 基本知识 ip addr show 命令用于显示网络接口的 IP 地址和相关网络配置,它是 ip 命令的一个子命令,广泛用于查看和管理网络接口的地址信息 ip addr show 会列出所有网络接口(包括回环接口和物理网络接口&am…

展会邀约|加速科技与您相约IC China 2024!

第二十一届中国国际半导体博览会( IC China 2024)将于 2024 年11月18日—11月20日在北京国家会议中心举行。加速科技将携高性能测试机ST2500EX、ST2500E、eATE及全系测试解决方案亮相E2馆B150展位。博览会期间,将同期举办"半导体产业前沿…

Python数据分析:分组转换transform方法

大家好,在数据分析中,需要对数据进行分组统计与计算,Pandas的groupby功能提供了强大的分组功能。transform方法是groupby中常用的转换方法之一,它允许在分组的基础上进行灵活的转换和计算,并将结果与原始数据保持相同的…

React Native 全栈开发实战班 - 网络与数据之网络请求基础

在移动应用中,网络请求 是实现与服务器进行数据交互的核心功能。React Native 基于 JavaScript 的特性,提供了多种方式进行网络请求,包括使用 fetch API、axios 库以及 WebSocket 等。本章节将详细介绍如何在 React Native 中进行网络请求&am…

检查Android设备当前的声音模式

要检查Android设备当前的声音模式(例如,是否为响铃模式、振动模式或静音模式),你可以使用 AudioManager 类。以下是如何获取设备是否处于非“响铃模式”的步骤: 使用 AudioManager 检查声音模式 import android.cont…