首页 > 其他分享 > FFmpeg的API库介绍

FFmpeg的API库介绍

时间:2023-02-12 12:01:53浏览次数:48  
标签:类库 例如 ffmpeg 函数 介绍 滤镜 API av FFmpeg

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

 FFmpeg的API库介绍_FFmpeg


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

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

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

 FFmpeg的API库介绍_FFmpeg_02

所以 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 找到实现的原理。


标签:类库,例如,ffmpeg,函数,介绍,滤镜,API,av,FFmpeg
From: https://blog.51cto.com/u_15655186/6052020

相关文章

  • Qt使用FFmpeg的动态库
    C/C++项目有两种编译方式,MinGW跟MSVC,如下:1,《​​MinGW编译静态库​​》2,《​​MSVC编译静态库​​》但是MinGW编译的静态库,是不能给MSVC的链接器使用的,虽然两者编译......
  • OpenSSL 介绍(2)--消息摘要
    本文主要介绍如何使用OpenSSL来进行消息摘要计算,文中所使用到的软件版本:OpenSSL1.1.1s、CentOS 7.9.2009。1、摘要算法摘要算法是一种能产生特殊输出格式的算法,这种......
  • 适用于AbpBoilerplate的RocketChat Api库
    RocketChat适用于AbpBoilerplate的RocketChatApi库Rocket.Chat是一个免费、开源、可扩展、高度可定制且安全的平台,可让您与团队进行交流和协作、共享文件和实时聊天(h......
  • 云计算浅谈之一:云计算介绍
    微软前一段通知,微软的云计算平台windowsazure在中国的服务将会于10月1日开通。微软承诺未来90%的开发人员将从事云计算方面的工作。在这个重要的时刻,是时候提醒更多的开发......
  • 7.3 不同操作系统的API不同
    应用软件则必须根据不同的操作系统类型来专门开发。CPU的类型不同,所对应的机器语言也不同,同样的道理,操作系统的类型不同,应用程序向操作系统传递指令的途径也是不同的。应......
  • drf入门到精通:接口文档、Cookie,Session,Token发展史、jwt介绍和原理、drf-jwt快速使
    目录一、接口文档使用coreapi自动生成接口文档步骤代码两点说明二、cookiesessiontoken发展史(彻底理解cookie,session,token,便于理解jwt)1、Cookie,Session,Token发展史2、......
  • Golang 库: 为什么 Golang slog 库不支持 `slog.Fatal` API
    Golang库:为什么Golangslog库不支持slog.FatalAPI原文链接:https://tangx.in/posts/2023/01/06/why-dont-golang-slog-support-fatal-api/使用slog默认不支持......
  • Ubuntu 的源相关介绍(最近在配gstreamer的时候,紧急补充的知识)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......
  • nginx主配置介绍
    1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成workerprocess数等。2、events块:配置影响ngin......
  • FFmpeg 基本操作摘要(一) (转流、解码、编码)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......