科技 > 软件教程 > 媒体工具

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

59人参与 2024-08-04 媒体工具

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开发实战:从零基础到短视频上线》一书。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

全智能深度演进,一键成片让视频创作颠覆式提效

08-04

2023年终回顾

08-04

FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx

08-04

FFmpeg开发笔记(十四)FFmpeg音频重采样的缓存

08-04

FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频

08-04

FFmpeg开发笔记(三十)解析H.264码流中的SPS帧和PPS帧

08-04

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论