当前位置: 首页 > article >正文

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

http://www.kler.cn/a/395183.html

相关文章:

  • CSS的综合应用例子(网页制作)
  • 基于微信小程序的公务员考试学习平台的设计与实现,LW+源码+讲解
  • STM32中,不进行printf改写通过函数达到同款效果
  • 第 13 章 -Go 语言 接口
  • 2024年11月12日Github流行趋势
  • Python 连接 Redis 进行增删改查(CRUD)操作
  • Vue3 -- 环境变量的配置【项目集成3】
  • StructuredStreaming (一)
  • 【golang-技巧】- pprof 添加开关
  • Leetcode刷题Python之3258.统计满足k约束的子字符串I
  • SSM学习记录(二)之SSM整合配置
  • 【Unity基础】对比OnCollisionEnter与OnTriggerEnter
  • 机器学习:CatBoost模型(高级版)——高效且强大的树形模型
  • 深度学习知识点5-马尔可夫链
  • 等保测评怎么做?具体流程是什么?
  • 鸿蒙UIAbility
  • 基于微信小程序的在线疫苗预约的设计与实现,LW+源码+讲解
  • 搜维尔科技:Haption力触觉交互,虚拟机械装配验证
  • 【K8S问题系列 | 9】如何监控集群CPU使用率并设置告警?
  • C++《继承》
  • SpringBoot -- 自动化装配源码
  • 江协科技之STM32驱动1.3寸/0.96寸/0.91寸OLED显示屏介绍
  • js中import引入一个export值可以被修改。vue,react
  • 【计网】计算机网络概述笔记
  • 使用frp工具实现内网穿透
  • 基于yolov8、yolov5的车型检测识别系统(含UI界面、训练好的模型、Python代码、数据集)