ffmpeg编译笔记: ubuntu14.04交叉编译并裁剪ffmpeg3.2版本,支持h264,h265解码,pcm音频,dxva2硬解码等

FFMPEG编译笔记一(ubuntu交叉编译ffmpeg动态库供windows 软件使用)

一、前言

  通常情况下,有两种方式可以编译生成windows平台使用的ffmpeg:一种是在Linux平台中安装mingw进行交叉编译;另一种是在windows下安装mingw编译。但是在windows下的编译相对于linux下比较麻烦,原因是windows编译动态库回增加一些非标准C++语言,ffmpeg没有为其做适配。

  本篇描述的ubuntu系统版本是14.04,由于ubuntu17.02以下的版本只能支持h264的dxva2,不能支持h265的dxva2,所以编译后的dxva2硬解只能支持h264,如果要支持h265的dxva2,请安装ubuntu17.02及以上,可以看我的另外一篇文档:ffmpeg笔记:ubuntu18.04编译ffmpeg5.1 x86与64。本篇编译的是32位的库,64位的话注意修改交叉编译器和相关配置。

二、相关下载

2.1.ubuntu14.04下载,链接地址:
https://pan.baidu.com/s/1eiR4BDjVORhPqTP29WwEVQ?pwd=9091
提取码:9091
或者从ubuntu官网上进行下载:http://mirrors.aliyun.com/ubuntu-releases

2.2.ffmpeg-3.2版本下载地址:

链接:https://pan.baidu.com/s/1jPXw483DR0LKLvxYqJal0w?pwd=9091
提取码:9091

三、编译环境

3.1.下载并安装minGW
下载地址:
https://sourceforge.net/projects/mingw/files/latest/download?source=files
或者:https://blog.csdn.net/zhouyongku/article/details/44961447

执行 ./mingw-w64-build-2.8.2

gcc与g++ 有勾选即可,其他默认就行

或者下载:
链接:https://pan.baidu.com/s/1Kfj5JiLPjSYX6l4zoECp5g?pwd=9091
提取码:9091

3.2.设置环境变量(注意:出现编译器找不到,很多是环境变量没设好):

export PATH=“/home/ipc/ffmpeg/mingw-w64-i686/bin:$PATH”

四、ffmpeg编译裁剪

4.1.配置并裁剪ffmpeg
以下配置命令支持h264、h265解码,音频aac,pcma,pcmu,dxva2硬解。

执行配置命令: ./configure --disable-static --enable-shared --enable-version3 --enable-gpl --enable-nonfree --disable-pthreads --enable-w32threads --enable-cross-compile --target-os=mingw32 --arch=x86 --enable-small --prefix=/home/ipc/ffmpeg/ffmpeg-421/opensdk-3.2/ffmpeg32-build --disable-doc --disable-htmlpages --cross-prefix=i686-w64-mingw32- --disable-indevs --disable-outdevs --disable-debug --disable-runtime-cpudetect --disable-encoders --disable-decoders --enable-decoder=h264 --enable-decoder=hevc --enable-decoder=aac --enable-decoder=pcm_mulaw --enable-decoder=pcm_alaw --enable-hwaccel=h264_dxva2 --enable-hwaccel=hevc_dxva2 --disable-filters --enable-filter=anull --enable-filter=null --enable-filter=aresample --enable-filter=pad --enable-filter=scale --enable-filter=overlay --enable-filter=amix

注:–prefix=修改为自己编译后的路径

4.2.编译ffmpeg,执行命令:make

执行结果:
在这里插入图片描述
4.3.执行命令:make install

执行结果:

在这里插入图片描述

编译后的库在qt工程或者ocx插件中测试是可用,功能较完全,占用空间很小。

五、ffmpeg配置项说明

5.1 ffmpeg configure命令:

1.–target-os=xxx:
指定编译目标系统:
32位为:–target-os=mingw32
64位为:–target-os=mingw32-w64

2.–prefix=xxx:
编译安装后库存储路径

3.–arch=xxx
指定arm架构
32位为:–arch=x86
64位为:–arch=x86_64

4.–cross-prefix=xxx
指定交叉编译器的前缀名
32位为:–cross-prefix=i686-w64-mingw32-
64位为:–cross-prefix=x86_64-w64-mingw32-

5.–extra-cflags=xxx
指定头文件路径

6.–extra-ldflags=xxx
指定引用库路径
–extra-ldflags=‘-static-libgcc’:加上这个配置,可以不用依赖libgcc_s_sjlj-1.dll

7.–extra-libs=xxx
指定额外引用库的名字

8.–with-pic
生成ffmpeg动态库用到的其他三方库编译时要加pic,否则会因为符号表问题寻址报错。

9.enable和disable配置项:
1)–enable-gpl:修改ffmpeg,再编译,编译时就需要加入这个选项才行
2)–enable-version3:更新许可证版本到3
3)–disable-everything:这个选项相当于关闭了encoders,decoders,hwaccels,muxers,demuxers,parsers,bsfs,protocols,devices,indevs,outdevs,filters共9种组件。
ffmpeg完全编译后有:avcodec,avdevice,avformat,swresample,swscale,avfilter,avutil,postproc这8大块,比如不需要后处理postproc这一块,那么我们就可以关闭它。
4)–enable-shared:默认情况下编译的库是静态的,如果我们想编译动态的,那么就可以加上这个选项。
5)–enable-cross-compile:如果想交叉编译,那么得开启这个开启这个选项,同时还得设置–arch和–target_os和–cross_prefix,实际上你只要增加了–cross_prefix选项,那么configure会自动帮你加上–enable-cross-compile,也就是有了–cross_prefix,–enable-cross-compile你可以省略不写。
6)–enable-asm:开启协处理器 提高FPS,可以提升解码速度。
7) --enable-small:可以优化库的大小
8)–enable-nonfree: 允许使用非免费的代码
9)–enable-libfdk-aac :使能aac编码(默认关闭)
10)–enable-x264:启用H.264编码(默认关闭)
11)–enable-filter=delogo:使能去水印记功能(默认关闭)
12)–enable-pthreads :启用pthreads(多线程)(默认关闭,可能会有线程安全问题)
13)–enable-static:构建静态库(默认启用)
14)–enable-librtmp:使用librtmp拉流(默认关闭)
15)–enable-pic:创造不依赖(于)位置的代码
16)–enable-libspeex:使能speex编码

5.2 帮助选项:
–help 打印此消息
–quiet 抑制显示信息输出
–list-decoders 显示所有可用的解码器
–list-encoders 显示所有可用的编码器
–list-hwaccels 显示所有可用的硬件加速器
–list-demuxers 显示所有可用的解复用器
–list-muxers 显示所有可用的复用器
–list-parsers 显示所有可用的解析器
–list-protocols 显示所有可用的协议
–list-bsfs 显示所有可用的比特流过滤器
–list-indevs 显示所有可用的输入设备
–list-outdevs 显示所有可用的输出设备
–list-filters 显示所有可用的过滤器

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅笑一斤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值