首页 > 其他分享 >FFmpeg开发笔记(四)FFmpeg的动态链接库介绍

FFmpeg开发笔记(四)FFmpeg的动态链接库介绍

时间:2024-03-10 11:47:12浏览次数:22  
标签:视频 FFmpeg 音频 笔记 音视频 滤镜 动态链接库 avcodec

FFmpeg不仅提供了ffmpeg、ffplay和ffprobe三个可执行程序,还提供了八个工具库,使得开发者能够调用库里面的函数,从而实现更精准的定制化开发需求。这八个库的名字是avcodec、avdevice、avfilter、avformat、avutil、postproc、swresample、swscale,下面分别对这些库展开介绍。更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

1、avcodec

avcodec是FFmpeg的音视频编解码库,它包含了各种音频的编码库和解码库,以及各种视频的编码库和解码库。通过avcodec可以将原始的音视频数据编码为符合某种码流规则的数据压缩包,也可以将数据压缩包按照指定的码流规则解压为原始的音视频数据。尽管avcodec内置了大部分的音视频编解码库,可是有些码流需要集成第三方的编解码库,比如视频格式h264要求集成第三方的x264,视频格式h265要求集成第三方的x265,音频格式mp3要求集成第三方的mp3lame等等,libavcodec目录下的诸多lib***.c代码就是用来集成第三方编解码库的。

2、avdevice

avdevice是FFmpeg的音视频设备库,它包含了音视频的各种输入输出设备库,其中输入设备指的是采集音视频信号的设备,输出设备指的是渲染音视频画面的设备。当然FFmpeg不会直接操作设备硬件,而是通过第三方的软件包去实现,比如采集媒体信号用到了Windows平台的VFW捕捉器(VFW全称Video for Windows),以及VFW的升级版DirectShow捕捉器;渲染媒体画面用到了Windows平台的GDI接收器(GDI全称Graphics Device Interface),以及跨平台的SDL2媒体开发库(SDL全称Simple DirectMedia Layer)。当然,FFmpeg也支持音效处理库OpenAL(全称Open Audio Library)和图形处理库OpenGL(全称Open Graphics Library)。

3、avfilter

avfilter是FFmpeg的音视频滤镜库,它包含了加工编辑音频和视频的各种滤镜包,其中音频滤镜的源码文件名形如af_***.c,视频滤镜的源码文件名形如vf_***.c。音频滤镜多用于调整参数、混合音频等处理,视频滤镜多用于变换视频、特效画面、添加部件等处理。

4、avformat

avformat是FFmpeg的音视频格式库,它包含了各类媒体文件格式库,以及各种网络通讯协议库。其中格式库不仅包含视频格式mp4、avi、mov、rm等,音频格式mp3、wav、aac、pcm等,还包含图像格式比如jpeg、gif、png、yuv等等。协议库不仅包含文件协议file,常规的通讯协议http、ftp、tcp、udp等,还包含流媒体传输协议比如rtsp、rtmp、hls、srt等等。

5、avutil

avutil是FFmpeg的音视频工具库,它包含了常见的通用工具和各类算法库,其中通用工具包括字典操作、日志记录、缓存交互、线程处理,以及加解密库aes、md5、sha、base64、等;各类算法包括排队算法fifo、排序算法qsort、哈希表hash、二叉树tree等等。除此以外,avutil也囊括了色彩空间、音频采样等方面的公共函数。

6、postproc

postproc是FFmpeg的音视频后期效果处理库,它主要用于进行后期的效果处理,如果代码中使用了滤镜,编译时就要链接这个库,因为滤镜用到了postproc的一些基础函数。

7、swresample

swresample是FFmpeg的音频重采样库,它主要用于音频重采样的相关功能,比如把音频从单声道变为多声道,变更音频的采样频率,转换音频的数据格式等等。

8、swscale

swscale是FFmpeg的视频图像转换库,它主要用于图像缩放、色彩空间转换等功能,其中色彩空间转换有时也被称作像素格式转换,比如把视频帧从YUV格式转换为RGB格式。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

标签:视频,FFmpeg,音频,笔记,音视频,滤镜,动态链接库,avcodec
From: https://www.cnblogs.com/aqi00/p/18062898

相关文章

  • 神州笔记本(HASEE) win11 操作系统自动进入休眠状态,唤醒后自动关机
    前几日在某东上购入神州笔记本(HASEE),用着本来还好,但是最近只要用到电源模式的问题,这个笔记本就是会无端进入到自动关机的状态。前文中也讨论过类似的问题:神州笔记本win11节能模式供电不足自动关机不过这次又有了新的问题,那就是在操作系统的电源模式下设置”闲置进入睡眠“......
  • Simsiam论文阅读笔记
    AbstractSiamese网络已经成为最近各种无监督视觉表示学习模型的共同结构。这些模型最大限度地提高了一个图像的两个增强之间的相似性,在一定的条件下避免崩溃的解。在本文中,我们报告了令人惊讶的经验结果,简单的Siamese网络可以学习有意义的表示,即使不使用以下内容:(i)负样本对,(ii)大......
  • Living-Dream 系列笔记 第49期
    T1令\(dp_{i,j}\)表示卖出区间\([i,j]\)能获得的最大价值。显然答案为\(dp_{1,n}\)。因为只能卖\(i\)/\(j\),所以有转移:\[dp_{i,j}=\max(dp_{i+1,j}+v_i\times(n-len+1),dp_{i,j-1}+v_j\times(n-len+1))\]初始:\(dp_{i,i}=v_i\timesn\),其余为\(-\infty\)。co......
  • 【Web】Web 阶段学习笔记
    Web阶段学习笔记目录Web阶段学习笔记一、前端基础(一)HTML与CSS(二)JavaScript入门一、前端基础(一)HTML与CSS1-1HTML快速入门1-2CSS入门与选择器1-3CSS字体与字体样式1-4链接、列表与表格样式1-5盒子模型点击展开剩余9项1-6浮动与弹性布局1-......
  • Bootstrap Your Own Latent A New Approach to Self-Supervised Learning论文阅读笔记
    BootstrapYourOwnLatentANewApproachtoSelf-SupervisedLearning论文阅读笔记Abstract​ 我们提出了BYOL,一种新的自监督图像表示学习的方法。BYOL依赖于两个神经网络,即在线网络和目标网络,它们相互作用和相互学习。从一个图像的增广视图出发,我们训练在线网络来预测同一图......
  • DSP笔记[2]-数码管显示英文字母及在flash上运行
    摘要在TMS320F28335开发板上实现8位数码管显示英文字母及烧录程序到Flash中断电程序不丢失;矩阵键盘扫描,实现按键1清零,按键2累加,按键3显示字母,按键4显示数字,按键5开关LED灯;LED流水灯.关键信息系统:macOS13.5(AppleSiliconM2)(烧录)系统:windows11(arm64)(编译)......
  • Git 笔记
    Git学习Git环境配置git配置文件本质都是基本的文件安装后必须配置项#配置用户信息gitconfig--globaluser.name='用户名'gitconfig--globaluser.email='邮箱地址查看配置git config -l查看不同级别的配置文件:#查看系统configgitconfig--system--list#......
  • Manacher 学习笔记
    \(\text{Manacher}\)学习笔记定义所谓回文串,指的是对于一个字符串\(s\),若它的长为\(n\),下标从\(1\)到\(n\),如果\(\foralli\in[1,n],s_i=s_{n+1-i}\),那么字符串\(s\)是一个回文串。给定一个字符串\(s\),求解它总共的回文子串个数。对于这一类问题的求解,我们发现,因为......
  • DP学习笔记
    Part1:DP的本质相信每个同学,都曾经有过被DP虐的经历。大部分同学在初学DP的时候,总是见一道题背过一道题,最后基本上是学会所有常见的套路,然后开始套模板。然而,随着层次的提升,这种文科生的思维就不够用了——毕竟谁会在IOI上傻乎乎地出个石子合并或者是多重背包呢?这样,我们......
  • CF1635F 笔记
    好题啊。题意给定\(n\)个二元组\((x_i,w_i)\),保证\(x\)升序。有\(m\)个询问\([l,r]\),对于每个询问求出:\[\min\limits_{l\lei<j\ler}(x_j-x_i)\cdot(w_i+w_j)\]题解一个精妙的结论:设\(L_i\)表示\(i\)左边第一个满足\(w_j\lew_i\)的\(j\),\(R_......