Windows编译和使用ffmpeg

一、ffmpeg编译选项说明

ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。其实 ffmpeg 只是对该框架的通俗称呼,该框架本质上为 libav,ffmpeg 也只是基于 libav 开发的一套工具。libav 框架可以编译在其他平台进行使用,在下载的源码中,包含有 configure 程序来进行编译工作,但是单纯的运行该程序进行编译,编译生成的包体积是非常大的,所以需要进行一些配置来减小编译包的大小。

1、增加编译选项

首先可以增加一些常规编译选项来减小最终编译包的大小。可以使用 ./configure -h 命令来列出 configure 程序支持的编译选项,每一项编译选项后都有对应的解释,其中能够直接减小编译包大小的命令有如下几个:

--enable-small: 使用编译速度来换取编译包大小
--disable-runtime-cpudetect: 禁止运行时检测CPU性能,可以编出较小的包
--disable-doc: 禁止编译文档,可以避免将文档编译入包中
--disable-htmlpages: 禁止编译html文档,可以避免将文档编译入包中
--disable-manpages: 禁止编译man文档,可以避免将文档编译入包中
--disable-podpages: 禁止编译pod文档,可以避免将文档编译入包中
--disable-txtpages: 禁止编译txt文档,可以避免将文档编译入包中

2、减少不必要的工具

最开始介绍了 ffmpeg 是基于 libav 开发的一套工具,除了 ffmpeg 之外,基于 libav 开发的工具还有:ffplay、ffprobe以及ffserver。这些不必要的工具是可以禁止掉的,相关选项为:

--disable-programs: 禁止编译命令行工具
--disable-ffmpeg: 禁止编译ffmpeg工具
--disable-ffplay: 禁止编译ffplay工具
--disable-ffprobe: 禁止编译ffprobe工具
--disable-ffserver: 禁止编译ffserver工具

3、减少不必要的模块

libav 包含以下几个模块:(1)libavdevice,该模块主要负责与硬件设备的交互,若无需该模块,可使用 --disable-avdevice 禁止编译;(2)libavcodec,该模块主要负责解码与编码,若无需该模块,可使用 --disable-avcodec 禁止编译,不过该模块为 libav 核心模块,非特殊情况最好不要禁止;(3)libavformat,该模块主要负责解封装与封装,若无需该模块,可使用 --disable-avformat 禁止编译,不过该模块为 libav 核心模块,非特殊情况最好不要禁止;(4)libswresample,该模块主要负责对原始音频数据进行格式转换,若无需该模块,可使用 --disable-swresample 禁止编译;(5)libswscale,该模块主要负责对原始视频数据进行场景转换、色彩映射以及格式转换,若无需该模块,可使用 --disable-swscale 禁止编译;(6)libpostproc,该模块主要负责对音视频进行后期处理,若无需该模块,可使用 --disable-postproc 禁止编译;(7)libavfilter,该模块主要负责音视频的过滤,包括裁剪、位置、水印等,若无需该模块,可使用 --disable-avfilter 禁止编译;(8)libavresample,该模块主要负责音视频封装编解码格式预设,该模块默认不编译,若要进行编译,使用 --enable-avresample。

4、减少不必要设备的编译

libav 可以从硬件设备中获取输入,同时也可以输出至硬件设备。可以指定支持的输入输出设备来避免不必要的编译:

--disable-devices: 禁止所有设备的编译
--disable-indevs: 禁止所有输入设备的编译
--disable-indev=NAME: 禁止特定输入设备的编译
--enable-indev=NAME: 允许特定输入设备的编译,搭配–disable-indevs可以实现单纯指定支持的输入设备
--disable-outdevs: 禁止所有输出设备的编译
--disable-outdev=NAME: 禁止特定输出设备的编译
--enable-outdev=NAME: 允许特定输出设备的编译,搭配–disable-outdevs可以实现单纯指定支持的输出设备

关于 libav 支持的输入输出设备名称,可以使用 ./configure --list-indevs 和 ./configure --list-outdevs 命令获取

5、减少不必要解析器的编译

libav 可以对输入的数据进行格式检测,该功能由解析器(parser)负责。可以指定支持的解析器来避免不必要的编译:

--disable-parsers: 禁止所有解析器的编译
--disable-parser=NAME: 禁止特定解析器的编译
--enable-parser=NAME: 允许特定解析器的编译,搭配 --disable-parsers 可以实现单纯指定支持的解析器

关于 libav 支持的解析器名称,可以使用 ./configure --list-

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值