FFmpeg的API库介绍

简介: FFmpeg的API库介绍

FFmpeg 的 API 库一共有 8 个,如下图:



1,swscale ,视频数据 处理类库,例如提供了 sws_scale 函数来做 像素格式和分辨率的转换,还有一些处理视频的滤波函数。sw 应该是 SoftWare 的缩写。

2,swresample ,音频数据 处理类库,例如提供了 swr_convert 函数 来实现 音频数据的重采样。

3,postproc,视频后处理库,提供了一些视频相关的函数,但是有很多函数没有实现,或者实现了一半,如下:

所以 libpostproc 应该是一个实验性的库,不用管。


4,avutil,a 代表 audio,v 代表 vedio,所以 avutil 是一个 与 音频,视频都相关的工具类。

avutil 这个库的主要函数分为以下几类。

  • 流媒体相关的函数,例如 av_frame_get_pkt_duration,av_frame_get_pkt_pos。
  • 内存管理函数,例如 av_malloc 跟 av_free 。
  • 数学相关的函数,例如 av_mod_i,av_mul_q。
  • FFmpeg 通用数据结构管理函数,例如 av_opt_find。
  • 线程相关函数,例如 av_thread_message_queue_alloc。

可以看出, avutil 库是一个大杂烩,什么都有。


5,avformat,封装格式处理库,主要是解析 MP4,MP3,TS,FLV 等等封装格式,同时 FFmpeg 还自己创建了一些假的封装格式,例如 tee 封装格式,这些假的封装格式只是为了方便 实现 ffmpeg 命令行的功能。tee 就是为了实现 命令行多路输出的语法。

6,avfilter,音视频滤镜库。有非常多的滤镜可以选择,例如裁剪时间,加水印,画中画,音频倍速。

滤镜库其实其实有点杂,他不只是做一些特效。FFmpeg 把一些功能性的函数也会加进去 avfilter 库,例如 转换音频的采样率,声道 都是用 aformat 滤镜实现的。用 aformat 滤镜实现 重采样 会比 用 swresample 更简单。虽然内部也是调的 swresample 。

7,avdevice,设备处理类库,主要处理各种设备的输入信息,例如摄像头,麦克风,抓屏。

8,avcodec,编解码类库,avcodec 实际上是编解码管理器,他定义了一种通用结构来对接其他的编解码器,你可以把很多外部的编解码集成到 avcodec 类库。


至此 ,8 个库就介绍完了,ffmpeg.exe 实际上也是 调这 8个库的函数实现的。而 ffmpeg.exe 主要由一个 5 千行的 ffmpeg.c 文件实现的。

所以 怎么调这 8个库的函数,这些 API 库的使用方法其实就在 ffmpeg.c 里面。

ffmpeg.exe 命令行任何的功能,都能在 5 千行的 ffmpeg.c 找到实现的原理。

目录
相关文章
|
8月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
792 130
|
9月前
|
域名解析 JSON API
【干货满满】如何处理requests库调用API接口时的异常情况
在调用 API 时,网络波动、服务器错误、参数异常等情况难以避免。本文提供一套系统化的异常处理方案,涵盖 requests 库常见异常类型、处理策略、实战代码与最佳实践,通过分类处理、重试机制与兜底策略,提升接口调用的稳定性与可靠性。
|
自动驾驶 程序员 API
告别重复繁琐!Apipost参数描述库让API开发效率飙升!
在API开发中,重复录入参数占用了42%的时间,不仅效率低下还易出错。Apipost推出的参数描述库解决了这一痛点,通过智能记忆功能实现参数自动填充,如版本号、分页控制、用户信息等常用字段,大幅减少手动输入。支持Key-Value与Raw-Json格式导入,一键提取响应结果至文档,将创建20参数接口文档时间从18分钟缩短至2分钟。相比Postman需手动搜索变量,Apipost的参数复用响应速度仅0.3秒,且支持跨项目共享与实时纠错,真正实现“一次定义,终身受益”。
|
7月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
277 11
|
监控 API 计算机视觉
CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
CompreFace 是一个在 GitHub 上拥有 6.1k Star 的轻量级人脸识别库,支持 API 和 SDK。它由 Exadel 公司开发,基于深度学习技术,提供高效、灵活的人脸识别解决方案。CompreFace 支持多种模型(如 VGG-Face、OpenFace 和 Facenet),具备多硬件支持、丰富的功能服务(如人脸检测、年龄性别识别等)和便捷的部署方式。适用于安防监控、商业领域和医疗美容等多个场景。
1770 4
|
API
表情包-API盒子官方资源库版免费API接口教程
该API用于访问API盒子官方资源库中的数十万表情包,支持快速搜索。通过POST或GET请求,用户可按随机或关键词搜索表情包,返回表情包的图片地址等信息。请求需提供用户ID、KEY及搜索类型等参数。示例与详情参见官方文档。
1244 3
|
机器人 API
随机昵称网名[百万昵称库]免费API接口教程
该API接口用于随机生成网名,适用于机器人昵称、虚拟用户名等场景。支持POST和GET请求,需提供用户ID和KEY。返回状态码及信息提示,示例如下:{"code":200,"msg":"豌豆公主"}。详情见官方文档:https://www.apihz.cn/api/zicisjwm.html
997 1
|
JSON API 数据格式
随机头像图片[API盒子官方资源库]免费API接口教程
API盒子提供的头像资源接口,包含大量网络公开收集的头像,适合非商业用途。支持POST/GET请求,需提供用户ID、KEY及返回格式类型。返回数据包括状态码和消息内容,支持JSON/TXT格式。更多详情见API盒子官网。
1152 1
|
JSON API 数据格式
随机壁纸图片[API盒子官方资源库]免费API接口教程
API盒子提供的图片资源接口,含数十万张网络公开图片(非商用)。通过POST或GET请求,需提交用户ID、KEY、返回格式及图片类型等参数。返回数据包括状态码和图片地址或错误信息。 示例ID与KEY共享调用限制,建议使用个人ID与KEY。详情见API文档。
1063 0