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

这篇具有很好参考价值的文章主要介绍了FFmpeg开发笔记(四)FFmpeg的动态链接库介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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开发实战:从零基础到短视频上线》一书。文章来源地址https://www.toymoban.com/news/detail-838155.html

到了这里,关于FFmpeg开发笔记(四)FFmpeg的动态链接库介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg

    FFmpeg支持Linux、macOS、Windows、Android等操作系统,其中Linux系列包括Ubuntu、Debian、Mint、CentOS、RHEL、Fedora等分支。FFmpeg官网的编译入口地址为 https://trac.ffmpeg.org/wiki/CompilationGuide,在这里可以找到FFmpeg对各系统的编译说明。更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到

    2024年03月23日
    浏览(43)
  • FFmpeg开发笔记(十四)FFmpeg音频重采样的缓存

    ​ FFmpeg在很多地方都运用了缓存机制,比如《FFmpeg开发实战:从零基础到短视频上线》一书的“3.3.2  对视频流重新编码”介绍了编解码的数据缓存,不单是视频编码过程和视频解码过程有缓存,甚至连音频重采样都用到了缓存。 也就是说,重采样函数swr_convert一次只会输出

    2024年04月14日
    浏览(39)
  • ffmpeg 开发笔记

    FFmpeg音视频处理 - 知乎 通过python实时生成音视频数据并通过ffmpeg推送和混流 - 知乎 直播常用 FFmpeg ffplay 命令 - 知乎 音视频 FFMPEG 滤镜使用 - 知乎  官网: ffmpeg Documentation

    2024年02月10日
    浏览(32)
  • FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码

    ​ 学习FFmpeg的时候,经常要到GitHub下载各种开源代码,比如FFmpeg的源码页面位于https://github.com/FFmpeg/FFmpeg。然而国内访问GitHub很不稳定,经常打不开该网站,比如在命令行执行下面的ping命令。 上面的ping结果如下所示,可见默认解析的DNS地址连接超时。 现在GitHub的DNS请求超时

    2024年03月17日
    浏览(64)
  • FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库

    ​ 《FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2  交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编译Android所需FFmpeg的so库。 登录Linux服务器(比如华为云的欧拉系统),依次执行下面的命令。 重

    2024年03月24日
    浏览(50)
  • FFmpeg开发笔记(二)搭建Windows系统的开发环境

    由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的。 不过若有已经编译好的Windows版本FFmpeg开发包,那就免去了繁琐的Windows编译过程,所以直接安装已编译的FFmpeg开发包

    2024年02月01日
    浏览(90)
  • FFmpeg开发笔记(一)搭建Linux系统的开发环境

    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库。 不过考虑到刚开始仅仅调用FFmpeg的API,不会马上去改FFmpeg的源码,因此只要给系统安装编译好的FFmpe

    2023年04月16日
    浏览(40)
  • FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass

    ​ libass是一个适用于ASS和SSA格式(Advanced Substation Alpha/Substation Alpha)的字幕渲染器,支持的字幕类型包括srt、ass等,凡是涉及到给视频画面添加字幕,均需事先集成libass。 《FFmpeg开发实战:从零基础到短视频上线》一书的“7.3.1  Linux环境安装libass”介绍了如何在Linux环境给

    2024年04月27日
    浏览(42)
  • FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx

    ​ MP4是最常见的视频封装格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2.3  自行编译与安装FFmpeg”介绍了如何给FFmpeg集成x264和x265两个库,从而支持H.264和H.265两种标准的编解码。 视频的封装格式除了悠久的MP4和ASF之外,还有较新的WebM格式,该格式的音频编

    2024年04月13日
    浏览(41)
  • FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr

    ​ FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2  Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖

    2024年04月08日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包