FFmpeg基础简介

背景介绍

FFmpeg 是一款音视频编解码工具,同时也是一组音视频编解码开发套件,为音视频开发者提供了丰富的音视频处理的调用接口。
FFmpeg中的“FF”指的是“Fast Forward”,“mpeg”则是人们通常理解的Moving Picture Experts Group(动态图像专家组)。

FFmpeg的下载

作为一套开源音视频编解码套件,FFmepg可以从网上自由下载,官方网站:http://ffmpeg.org/download.html
源码官方下载地址
https://git.ffmpeg.org/ffmpeg.git 官方主git仓库
https://git.ffmpeg.org/ffmpeg-web 官方主网址仓库
https://git.ffmpeg.org/fateserver fate server软件仓库
镜像地址(下面三个都是github上的镜像网址)
https://github.com/FFmpeg/FFmpeg
https://github.com/FFmpeg/web
https://github.com/FFmpeg/fateserver
源代码的下载,可以通过github或者官网来下载。

(base) $ git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg  
Cloning into 'ffmpeg'...
remote: Enumerating objects: 25466, done.
remote: Counting objects: 100% (25466/25466), done.
remote: Compressing objects: 100% (10428/10428), done.
remote: Total 686019 (delta 19479), reused 19934 (delta 14986)
Receiving objects: 100% (686019/686019), 170.00 MiB | 4.23 MiB/s, done.
Resolving deltas: 100% (553363/553363), done.
Updating files: 100% (8037/8037), done.

到此,FFmpeg源代码库就算下载下来了。下面,我们选择一个稳定版本进行学习和研究,选择3.3的版本。

(base) $ cd  ffmpeg/
(base) $ git branch -a
* master
  remotes/origin/HEAD -> origin/master
        ... ...
  remotes/origin/release/3.1
  remotes/origin/release/3.2
  remotes/origin/release/3.3
  remotes/origin/release/4.1
  remotes/origin/release/4.2
  remotes/origin/release/4.3
(base) $ git checkout -b release/3.3  remotes/origin/release/3.3
Updating files: 100% (4700/4700), done.
Branch 'release/3.3' set up to track remote branch 'release/3.3' from 'origin'.
Switched to a new branch 'release/3.3'

FFmpeg的基础组成

FFmpeg的基本组成包含:AVFormat、AVCodec、AVFilter、AVDevice、swscale、swresample等
下图是FFmpeg文件截图
在这里插入图片描述
(1)AVFormat的实现都在libavformat。其实现了目前多媒体领域的绝大部分封装格式,包括封装和解封装,如flv、mp4、ts等文件格式,rtmp、rtsp、hls等网络封装格式。
(2)AVCodec的实现都在libavcodec。其实现了目前多媒体领域绝大部分常用的编解码格式,包含编码和解码。AVCodec支持的编码格式有MPEG4、H264、H265、AAC、mp3等多种编码格式,它是FFmpeg的编解码模块。
(3)AVFilter的实现都在libavfilter。其提供了一个通用的音频、视频、字幕等滤镜处理框架,它可以有多个输入和多个输出,非常灵活,能够满足音视频开发者基础的滤镜需求。
(4)AVDevice的实现都在libavdevice。通过其方法可以读取电脑(或其他设备上)的多媒体设备的数据,或者输出到指定的多媒体设备上。
(5)swscale的实现都在libswscale。这一个视频图像转换计算模块,它可以帮助把图像缩放和格式转换,比如yuv转rgb、1080P转720P等
(6)swresample的实现都在libswresample。这是音频转换计算模块,它可以进行音频的重采样、声道变换、音频存储布局转换,比如48KHZ采用率转为44.1KHZ采样率、双声道数据转为单声道等。

FFmpeg的编译和安装

FFmpeg在官方网站上提供了已编译好的可执行文件。因为FFmpeg是开源的,所以使用者可根据自己的需要修改、增加或者减少相关功能,并进行手动编译。
FFmpeg是通过configure命令选择打开或者关闭一些功能,然后通过configure创建所需要编译功能的Makefile文件,configure成功后执行make,最后执行make install完成FFmpeg的安装。
通过configure命令查看FFmpeg所支持的音视频编码格式、文件封装格式与流媒体传输协议等。

(base) $ ./configure --help

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 通过Help options可以知道FFmpeg支持的编解码格式、封装格式、封装协议有哪些,比如想知道支持的解码器有哪些,可以使用命令
./configure --list-decoders
  1. 通过Individual component options,可以知道怎样打开或者关闭某个组建的编译
  2. 通过External library support,可以知道打开某个库,还需要依赖哪些第三方库

MAC编译

下面,我们在Mac电脑上编译一个FFmpeg。要求是:支持MP4、FLV、M3U8的封装和解封装,支持H264、H265格式的编码和解码,支持aac、mp3编码和解码,支持RTMP、HLS、HTTP-FLV的传输协议,支持基本filter的能力,支持图像格式的转换和音频重采样,编译ffmpeg、ffplay、ffprobe。

  1. brew install yasm
    ffmpeg的编译过程依赖yasm
  2. brew install sdl2
    ffplay依赖于sdl2
  3. brew install fdk-aac
    aac编解码库
  4. brew install x264
    h264编码库
  5. brew install x265
    h265编码库

configure

然后执行源码目录下的configure脚本,设置一些编译参数,做一些编译前的准备工作

./configure  --prefix=/usr/local/ffmpeg3.3 --disable-asm --enable-static  --disable-shared  --enable-gpl  --enable-nonfree  --enable-ffplay --enable-sdl2 --enable-libfdk-aac --enable-libx264 --enable-libx265  --enable-decoder=aac --enable-decoder=h264 --enable-decoder=hevc  --enable-muxers --enable-demuxers --enable-encoder=aac --enable-avcodec --enable-avformat  --enable-avfilter  --enable-network --enable-protocols --enable-protocol=rtmp  --enable-protocol=hls --enable-protocol=http --enable-protocol=https --enable-protocol=ffrtmphttp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过配置后的面板信息可知:编码、封装、协议、滤镜都满足了我们的需求。

编译

make -j8

安装

将编译好的库安装到指定的位置:/usr/local/ffmpeg3.3

make install

安装完毕后,/usr/local/ffmpeg3.3的目录结构如下所示
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FFmpeg是一个开源的音视频处理库,支持多种音视频格式的解码和编码,并提供丰富的音视频处理功能。使用FFmpeg可以进行音视频文件的格式转换、剪辑、裁剪、合并、添加水印等操作。 FFmpeg基础库编程开发主要包括以下几个方面: 1. FFmpeg的安装和配置:首先需要下载并安装FFmpeg的开发包,然后配置开发环境,将FFmpeg的头文件和库文件引入到项目中。 2. 解码和编码:使用FFmpeg可以将不同音视频格式的文件进行解码,获取音频和视频的原始数据。同时,也可以将原始数据进行编码,生成不同格式的音视频文件。 3. 音视频处理:FFmpeg提供了丰富的音视频处理功能,例如音频的变速、变调、混音等,视频的裁剪、旋转、添加特效等。通过调用FFmpeg提供的接口,可以实现这些功能。 4. 图像和音频处理:在使用FFmpeg进行开发时,可以调用相关的接口进行图像和音频的处理。例如,可以提取视频中的关键帧,生成缩略图,对音频进行降噪处理等。 5. 应用场景:FFmpeg可以应用于多种场景,包括视频编辑软件、音视频转换工具、实时音视频流处理、视频网站和在线直播等。使用FFmpeg可以方便地对音视频文件进行处理,并具有高效、稳定的特点。 总之,FFmpeg基础库编程开发是一个相对复杂的领域,需要对音视频处理有一定的了解,并具备相关的编程实践经验。掌握FFmpeg的使用,可以为开发者提供丰富的音视频处理功能,满足不同场景下的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值