700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Windows下Mingw版本的FFMPEG源码编译

Windows下Mingw版本的FFMPEG源码编译

时间:2020-04-17 07:31:58

相关推荐

Windows下Mingw版本的FFMPEG源码编译

众所周知FFMPEG是非常牛逼的存在,但是在学习FFMPEG时一般都是依库的形式调用,总有种隔靴搔痒的感觉,于是爆肝了两天终于把代码加入到Qt工程中了

Mingw 版本编译 FFMPEG(动态静态库版本)

前置条件:

先跳坑在ubuntu编译FFMPEG和ffplay中的Window小节有详细介绍,这个还是比较重要的,起码有个感性的认识一个bash解析器,这个选git就行了,程序员还能不装个这?mingw编译器一套(Qt自带的就行了)打开git终端输入以下命令 (我是装了cywin以及另外的mingw64套件)所以要直接将PATH变量清零(只保留mingw和git命令环境),还有个要注意DOS中的c:\这里要改成/c,因为冒号:在linux中起到路径分割的作用, 而windows下是分号;

移到Qt中

其实实现的有点挫(只实现了window环境下的x86_32位),为每个子模块编写一个pri文件包含起来

重要知识点:

如何使用qmake编译汇编文件asm

参考mingw链接库版本中的下面一句话,结合QMake的非公开wiki(见文末)可以新建一个yasm.pri内容如下编译步骤

依次为libavutil, libswresample, libavcodec, libavformat, libswscale, libpostproc, libavdevice, libavfilter, 其中第一个必须编译libavutil模块,这个是个工具库,所有其他的部分可能会依赖它, 然后照猫画虎编译其他模块大致按照上面顺序, 在遇到依赖的就延后处理就是了

思路

在克隆好的ffmpeg 中先执行 .configure命令 得到一些必要的配置文件(config.h, config_components.h等文件)新建一个ffmpeg.pri参考每个模块文件夹下的makefile文件编写pri文件

写python脚本处理一下内容大致为以下步骤将makefile文件中的OBJS中的各个.o替换成同名的.c遇到形如 OBJS-$(CONFIG_CUDA) 之类的查找config.h中CONFIG_CUDA的定义如果为1 则替换.o 为.c或者.asm,如果为0则注释掉遇到重名的.c 只保留一个(汇编只会警告,c文件重复会报错….)到每个模块目录如果存在架构文件夹(如x86)则找到makefile参照建立对应的.pri文件

如第一个libavutil.pri文件如下

对应的x86.pri

测试

新建一个工程 将ffmpeg文件夹拷贝过去

mian.cpp文件如下

附件下载

配置参考附件

参考链接

Undocumented_QMakeadding-compilersAvoiding name clashes with Qmake

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。