一.安装MSYS2环境

1.点击下载msys2-x86_64-20210419.exe或去官网MSYS2官网下载最新版本。

2.安装msys2到任意路径
3.运行mys2并执行命令pacman -Syu,提示一律输入Y同意,终端自动关闭后重新运行msys2(msys2.exe文件在安装目录下),并再次执行pacman -Syu
4.执行命令安装所需依赖包:

pacman -S make
pacman -S diffutils
pacman -S yasm
pacman -S nasm
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-i686-gcc
pacman -S mingw-w64-x86_64-gtk3
pacman -S mingw-w64-i686-gtk3
pacman -S git

5.下载pkg-config
下载pkg-config_0.23-2_win64并解压,复制 pkg-config.exe 到 安装盘符\msys64\mingw64\bin
下载pkg-config_0.26-1_win32并解压,复制 pkg-config.exe 到 安装盘符\msys64\mingw32\bin
6.修改文件后缀使编译出dll正常运行

cd /mingw32/bin/
cp libintl-8.dll intl.dll
cd /mingw32/i686-w64-mingw32/lib/
mv libpthread.dll.a libpthread.dll.a-org && mv libwinpthread.dll.a libwinpthread.dll.a-org
cd /mingw32/lib
mv libbz2.dll.a libbz2.dll.a-org && mv libz.dll.a libz.dll.a-org
mv libiconv.dll.a libiconv.dll.a-org && mv liblzma.dll.a liblzma.dll.a-orgcd /mingw64/bin/
cp libintl-8.dll intl.dll
cd /mingw64/x86_64-w64-mingw32/lib/
mv libpthread.dll.a libpthread.dll.a-org && mv libwinpthread.dll.a libwinpthread.dll.a-org
cd /mingw64/lib
mv libbz2.dll.a libbz2.dll.a-org && mv libz.dll.a libz.dll.a-org
mv libiconv.dll.a libiconv.dll.a-org && mv liblzma.dll.a liblzma.dll.a-org

二.下载源码

1.FFmpeg源码
下载FFmpeg 4.3.1:

cd /home
wget https://github.com/FFmpeg/FFmpeg/archive/n4.3.1.tar.gz
tar -zxvf n4.3.1.tar.gz

2.x264源码下载

wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar -jxvf /home/x264-master.tar.bz2

3.amf源码下载

wget https://github.com/GPUOpen-LibrariesAndSDKs/AMF/archive/1.4.16.1.tar.gz
tar -zxvf /home/AMF-1.4.16.1.tar.gz
cp -r /home/AMF-1.4.16.1/amf/public/include /usr/local/include/AMF

4.ffnvcodec安装

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make & make install

三.编译dll

1.编译32位dll
启动mingw32
命令行/msys2_shell.cmd -mingw32或者在根目录中找到mingw32.exe运行

1.1编译x264

cd /home/x264-master/./configure \
--prefix=/mingw32 \
--enable-static \
--host=msys \
--disable-climake clean
make -j6 #6表示编译时占用6核,可更改
make install

编译成功

install -d /mingw64/include /mingw64/lib/pkgconfig
install -m 644 ./x264.h x264_config.h /mingw64/include
install -m 644 x264.pc /mingw64/lib/pkgconfig
install -d /mingw64/lib
install -m 644 libx264.a /mingw64/lib
gcc-ranlib /mingw64/lib/libx264.a

1.2编译FFmpeg
根目录下创建脚本文件build.sh

#!/bin/bash
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
PREFIX="./bin-$1"
echo "Install dir: $PREFIX"
./configure \
--prefix=$PREFIX \
--extra-ldsoflags="-static-libgcc" \
--extra-cflags="-I/usr/local/include" \
--extra-ldflags="-L/usr/local/lib" \
--disable-iconv \
--disable-doc \
--disable-debug \
--disable-avdevice \
--disable-indevs \
--disable-outdevs \
--disable-postproc \
--disable-ffplay \
--disable-ffprobe \
--disable-encoders \
--disable-decoders \
--enable-small \
--enable-shared \
--enable-ffmpeg \
--enable-version3 \
--enable-nonfree \
--enable-w32threads \
--enable-avcodec \
--enable-avformat \
--enable-swresample \
--enable-swscale \
--enable-avfilter \
--enable-gpl \
--enable-amf \
--enable-nvenc \
--enable-x86asm \
--enable-libx264 \
--enable-encoder=flv \
--enable-encoder=h264_nvenc \
--enable-encoder=h264_amf \
--enable-encoder=hevc_nvenc \
--enable-encoder=hevc_amf \
--enable-encoder=libx264 \
--enable-encoder=pcm_s16le \
--enable-encoder=pcm_s24le \
--enable-encoder=aac \
--enable-encoder=ac3 \
--enable-encoder=dca \
--enable-encoder=opus \
--enable-encoder=vorbis \
--enable-encoder=srt \
--enable-encoder=ass \
--enable-encoder=subrip \
--enable-encoder=mjpeg \
--enable-encoder=gif \
--enable-decoder=mpeg4 \
--enable-decoder=flv \
--enable-decoder=h264 \
--enable-decoder=hevc \
--enable-decoder=vp9 \
--enable-decoder=h264_cuvid \
--enable-decoder=hevc_cuvid \
--enable-decoder=vp9_cuvid \
--enable-decoder=opus \
--enable-decoder=vorbis \
--enable-decoder=aac \
--enable-decoder=ac3 \
--enable-decoder=eac3 \
--enable-decoder=srt \
--enable-decoder=ass \
--enable-decoder=subrip \
--enable-decoder=pcm_s16le \
--enable-decoder=pcm_s24le \
--enable-decoder=dca \
--enable-decoder=mp3 \
--enable-decoder=flac \
--enable-decoder=ape \
--enable-decoder=mjpegmake clean
make -j6 #CPU核心数
make install

回到32位终端,执行编译命令

#切到FFmpeg根目录
cd /home/FFmpeg-n4.3.1
#编译
./build.sh 32

编译成功将生成

avcodec.lib
avfilter.lib
avformat.lib
avutil.lib
swresample-3.dll
swscale-5.dll
avcodec-58.dll
avfilter-7.dll
avformat-58.dll
avutil-56.dll
ffmpeg.exe
swresample.lib
swscale.lib

2.编译64位dll
启动mingw64,通过命令行/msys2_shell.cmd -mingw64或者mingw64.exe
2.1编译x264

cd /home/x264-master/./configure \
--prefix=/mingw64 \
--enable-static \
--disable-climake clean
make -j6 #改成你的CPU核心数
make install

2.2编译FFmpeg

#切到FFmpeg根目录
cd /home/FFmpeg-n4.3.1#编译
./build.sh 64

编译成功后将在/home/FFmpeg-n4.3.1/bin-64/bin目录下生成我们需要的lib及dll文件

mingw编译FFmpeg32位和64位dll相关推荐

  1. Windows下编译FFmpeg 32位和64位DLL

    此教程编译环境为Win10 64位+MSYS2 支持x264编码器:NVIDIA 硬件编码器(h264_nvenc, hevc_nvenc):AMD硬件编码器(h264_amf, hevc_amf) ...

  2. 使用VS在64位平台下编译代码,生成64位dll

    最近要把一个之前在32位平台下编译的项目改成64位平台,之前从来没搞过关于64位的东西,所以到处查资料,所幸搞成功了,把过程记录一下,防止以后忘记. 首先声明:64位平台无法直接调用32位dll,32 ...

  3. 32位/64位系统,jdk32位,64位,32/64位jdk编译出来的class和eclipse 32位和64位

    首先关于32位/64位系统,jdk32位,64位,32/64位jdk编译出来的class和eclipse 32位和64位的一些对应关系做些说明. 1.32位操作系统不可以装64位jdk,64位操作系统 ...

  4. 编译并使用boost库(win7+boost1.63+vs2015+32位or 64位)

    博客 学院 下载 GitChat 论坛 问答 商城 VIP 活动 招聘 ITeye 码云 CSTO 写博客 发Chat 编译并使用boost库(win7+boost1.63+vs2015+32位or ...

  5. visual studio编译boost1.73.0静态库32位和64位

    使用vs2015编译32位 REM 使用vs2015,如果vs2019将下面的vc14替换为vc142(特殊:--toolset=msvc-14.2 CALL bootstrap vc14 CALL ...

  6. 交叉编译工具32位在64位的Linux系统中编译

    1. 问题描述 将交叉编译工具链拷贝到新的虚拟机(Ubuntu16系统)中发现出现编译工具文件不存在的报错.一开始以为是由于公司电脑加密,拷贝下来有问题,无法识别,最后和同事讨论,发现是系统和交叉编译 ...

  7. CATIA CAA 32位和64位编译

    CATIA CAA 32位和64位编译 CATIA 编译32位和64位程序,CATIA有32位和64位的区别,CAAheadRADE没有32位和64位的区别.编译不同版本的插件时,仅需修改环境变量,然 ...

  8. 32位dll注入到64位程序_你用的32位还是64位?有什么区别呢?

    (给程序员零距离加星标,了解项目开发.) 粉丝福利:小编会从今天留言中抽选3名小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!通过前面两篇文章的学习,外甥对电脑的产生了各种好奇,差点把自己电脑拆 ...

  9. 查看Eclipse32位还是64位以及Eclipse的编译版本号,查看JDK是32位还是64位

    一.查看Eclipse是32位还是64位 首先进入到Eclipse的安装目录: 查找到文件名为"eclipse.ini" 文件,使用文本编辑工具,或记事本打开,如下图: 以上是查看 ...

  10. c语言编译 64位,cmake – 编译32位和64位

    正如我在评论中所说,这是我们如何做到这一点的一个例子. if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) MESSAGE( "64 bits compiler detect ...

最新文章

  1. UIScrollView无法滚动可能的原因及解决办法分析
  2. python学不会的表情包-python这么简单 为何这么多人学不会
  3. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )
  4. ASP.NET服务器端控件原理分析
  5. pyqt5入门教程(五)
  6. java.io.IOException: Too many open files
  7. Fact Table and Dimension Table In My Opinion
  8. Mindis(HDU-6670)
  9. 闲鱼:1月13日至1月19日冻结涉欺诈用户1.1万个
  10. Echarts pie 饼图类型后显示数据
  11. 没有人躲得过:被数学支配的噩梦
  12. 华为h12m03装系统_华为H22H-03服务器怎么从U盘装系统?
  13. 《自适应滤波器原理》西蒙.赫金 百度云
  14. win 11 无法打出中文句号问题(中/英文标点切换) 微软五笔输入法
  15. 游戏项目开发的简单流程
  16. python re 中文_python处理中文编码
  17. jav中spark迁移hive到mongo(更新数据)
  18. Java跨年祝福语代码_春节语音祝福短信java也疯狂
  19. python必备单词整理_别乱找了,Python常用单词Word合集,已经给你整理全了
  20. 【WCN685X】WCN6856 5G吞吐量测试只有25Mbps问题原因分析及解决方案

热门文章

  1. 浙江大学计算机学院孙凌云,浙江大学计算机科学与技术学院导师介绍 孙凌云...
  2. 又一个跨平台的快速app开发工具:AppArchitect
  3. 人类\经济\太阳,管他呢
  4. Xcode卡死问题,总是在转菊花,程序无响应
  5. ARX 中设置CAD 字体
  6. 关于机油标号的含义和正确使用
  7. 原型(prototype)
  8. HGE source explor 0x0
  9. scm中mysql作用_SCM系统的作用有哪些
  10. win11兼容性_win11系统软件兼容性测试