ffmpeg交叉编译-1ffmpeg模块介绍

ffmpeg下载地址:https://ffmpeg.org/download.html
包括:

第一部分:工具

第一部分是四个作用不同的工具软件,分别是:ffmpeg.exe,ffplay.exe,ffserver.exe
和 ffprobe.exe。

  1. ffmpeg:音视频转码、转换器,可以命令行形式
ffmpeg -r 1 -i input.m2v -r 24 output.avi
命令详细介绍链接:https://ffmpeg.org/ffmpeg.html
  1. ffplay:简单的音视频播放器
    https://ffmpeg.org/ffplay.html
  2. ffprobe.exe:简单的多媒体码流分析器
    https://ffmpeg.org/ffprobe.html

第二部分:SDK

第二部分是可以供开发者使用的 SDK,为各个不同平台编译完成的库。
如果说上面的四个工具软件都是完整成品形式的玩具,那么这些库就相当于乐高积木一样,我们可以根据自己的需求使用这些库开发自己的应用程序。这些库有:

  1. libavcodec:包含音视频编码器和解码器。编解码库,封装了 Codec 层,但是有一些 codec 是具备自己的 License 的。 实现了目前多媒体领域大多数常用的编解码格式,libavcodec 除了支持 MPEG4、AAC、MJPEG 等自带的媒体编解码格式之外,还支持第三方编解码器,例如:H.264 (AVC) 编码,需要使用 x264 编码器;H.265 (HEVC) 编码,需要使用 x265 编码器;MP3(mp3lame) 编码,需要使用 libmp3lame 编码器。不会默认添加像 libx264、FDK-AAC、Lame 等库,但是 FFmpeg 是一个平台,可以将其他的第三方 codec 以插件的方式添加进来,为开发者提供统一接口使用如下命令查看支持的编解码格式:
  ffmpeg -encoders(编码器格式)/-decoders(解码器格式)
  1. libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等功能。核心工具库,最基础模块之一,其他模块都会依赖该库做一些基本的音视频处理操作。

  2. libavformat:包含多种多媒体容器格式的封装、解封装工具。实现了目前多媒体领域的绝大多数媒体格式,包括封装与解封装,例如 FLV、MP4、WAV 等文件格式,可以使用如下命令查看支持的封装格式:

 ffmpeg -muxers
  1. libavfilter:包含多媒体处理常用的滤镜功能。该模块包含了音频特效和视频特效的处理,提供了一个通用的音频、视频、字幕等滤镜处理框架。

  2. libavdevice:用于音视频数据采集和渲染等功能的设备相关。输入输出设备库,比如需要编译出播放声音或者视频的工具 ffplay,就需要确保该模块是打开的,同事也需要 libsdl 的预先编译,该设备模块播放声音和视频都又是使用 libsdl 库。

  3. libswscale:用于图像缩放和色彩空间和像素格式转换功能。该模块用于图像格式转换,可以将 YUV 的数据转换为 RGB 的数据。

  4. libswresample:用于音频重采样和格式转换等功能。用于音频重采样,可以对数字音频进行声道数、数据格式、采样率等多种基本信息的转换。

  5. libpostproc:该模块用于进行后期处理,当我们使用 filter 的时候,需要打开这个模块,filter 会用到这个模块的一些基础函数。

比较老的 ffmpeg 还会编译出 avresamle 模块,也是用于对音频原始出具进行重采样的,但是已经被废弃,推荐使用 libswresample 替代。另外,库里还可以包含对 H.264/MPEG-4 AVC 视频编码的 X264 库,是最常用的有损视频编码器,支持 CBR、VBR 模式,可以在编码的过程中直接改变码率的设置,在直播的场景中非常适用!可以做码率自适应的功能。

你可能感兴趣的:(ffmpeg交叉编译-1ffmpeg模块介绍)