• win10 编译 FFmpeg (MSYS2 + MSVC 64 )


    win10编译FFmpeg

    MSYS2 + MSVC 64

    1.安装编译环境

    1.1安装MSYS2

    下载官网:https://www.msys2.org/

    安装完成后,打开安装目录,修改 msys2_shell.cmd 文件

    rem set MSYS2_PATH_TYPE=inherit
    #改为
    set MSYS2_PATH_TYPE=inherit
    
    • 1
    • 2
    • 3

    1.1.1修改pacman为国内源

    进入msys2安装目录下的,如:

    D:\msys2\etc\pacman.d

    修改 mirrorlist.mingw32 ,在 ## Primary 下第一行添加

    Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/ 
    Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
    
    • 1
    • 2

    修改 mirrorlist.mingw64

    Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/ 
    Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
    
    • 1
    • 2

    修改 mirrorlist.msys

    Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/ 
    Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
    
    • 1
    • 2

    1.1.2 打开msys2更新pacman软件包

    管理员模式打开适用于 VS 2017 的 x64 本机工具命令提示 进入msys2安装目录,输入以下命令 打开msys2

    32

    msys2_shell.cmd -mingw32
    
    • 1

    64

    msys2_shell.cmd -mingw64
    
    • 1

    在msys2控制台中输入以下命令,更新软件包

    pacman -Sy
    
    • 1

    1.2安装mingw-w64

    全部回车默认安装即可,编译64位之前编译过32位的环境,请先卸载32位的环境

    32

    pacman -S mingw-w64-i686-toolchain
    pacman -S base-devel
    
    • 1
    • 2

    64

    pacman -S mingw-w64-x86_64-toolchain
    
    • 1

    1.3安装make等工具

    pacman -S make
    pacman -S automake
    pacman -S autoconf
    pacman -S perl
    pacman -S libtool
    pacman -S mingw-w64-i686-cmake
    pacman -S pkg-config 
    #如果需要编译出ffplayer的话,还需要安装SDL 
    pacman -S mingw-w64-x86_64-SDL2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1.4安装YASM

    安装yasm之前,需要把msys2安装目录中

    D:\msys2\usr\bin\link.exe 改为 D:\msys2\usr\bin\link.bak

    用的是 msvc 的编译模式,因为需要避免与MSVC的link.exe冲突.如果使用的是mingw编译则不需要改

    MSYS2+ MinGW 跟 MSYS2 + MSVC 这两种编译方式。 MinGW 用的 gcc.exe 编译器。MSVC 才是 cl.exe 编译器。

    pacman -S yasm
    
    • 1

    1.5安装NASM

    pacman -S nasm
    
    • 1

    1.6检查安装完整性

    没有出现no基本就OK了

    which cl link yasm cpp
    
    • 1

    1.7安装git

    安装就行,因为需要克隆项目

    2.编译第三方库

    打开适用于 VS 2017 的 x64 本机工具命令提示 进入msys2安装目录,输入以下命令 打开msys2

    32

    msys2_shell.cmd -mingw32
    
    • 1

    64

    msys2_shell.cmd -mingw64
    
    • 1

    2.1下载和编译x264

    x264是一个开源的[H.264/MPEG-4 AVC](https://baike.baidu.com/item/H.264%2FMPEG-4 AVC)视频编码函数库,是最好的有损视频编码器之一。

    码云中clone下来

    git clone https://gitee.com/mirrors_addons/x264.git
    
    • 1

    cd 进入x264文件夹中,执行,注意以下,prefix的参数记得改成你需要生在在的目录(注意空格–注意空格–注意空格)

    32

    ./configure --prefix=../build/libx264 --host=i686-w64-mingw32 --enable-static --enable-shared --extra-ldflags=-Wl,--output-def=libx264.def
    
    • 1

    64

    ./configure --prefix=../build/libx264 --host=x86_64-w64-mingw32 --enable-static --enable-shared --extra-ldflags=-Wl,--output-def=libx264.def
    
    • 1

    之后make

    make -j
    
    • 1

    之后install

    make install
    
    • 1

    进入install目录(将.a文件转成.lib文件,需要libx264.def)
    make install 之后发现lib目录下没有libx264.def,应该在源码目录下。

    cd /home/admin/ffmpeg/build/libx264/lib
    
    #若要⽣成64位lib⽂件则输⼊如下命令: 
    lib /machine:X64 /def:libx264.def 
    #若要⽣成32位lib⽂件则输⼊如下命令: 
    lib /machine:i386 /def:libx264.def
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    lib的描述:https://www.cnblogs.com/lovesaber/archive/2012/11/27/2790297.html

    3.下载和编译ffmpeg

    官网中clone下来

    git clone git://source.ffmpeg.org/ffmpeg.git
    cd ffmpeg
    
    #查看ffmpeg版本
    git branch -a
    #切换ffmpeg 4.2版本
    git checkout remotes/origin/release/4.2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    写一个编译脚本(注意extra-cflags路径和extra-ldflags路径)

    build_ffmpeg.sh

    ./configure \
    --prefix=/home/admin/ffmpeg/build/ffmepg-4.2 \
    --arch=x86_64 \
    --enable-shared \
    --enable-gpl \
    --enable-nonfree \
    --disable-lzma	\
    --disable-zlib	\
    --enable-libx264 \
    --extra-cflags="-I/home/admin/build/libx264/include" \
    --extra-ldflags="-L/home/admin/build/libx264/lib" 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    我在./configure的时候,disable了lzma和zlib,我好像没有用到这两个库,不写disable会默认依赖这个库的。

    执行脚本

    sh build_ffmpeg.sh
    make -j
    make install
    
    • 1
    • 2
    • 3

    编译中出现 xxx not found using pkg-config

    在编译前,export PKG_CONFIG_PATH=库.pc的目录

    4.window cmd

    # 查看依赖什么库
    dumpbin /dependents avcodec-58.dll
    # 查看dll 32或64
    dumpbin /headers xxx.dll
    
    • 1
    • 2
    • 3
    • 4

    5.参考:

    实战经验:在Windows平台编译x264

    Linux编译安装各种坑,FFmpeg&libx264编译安装遇到的各种坑

    window10_ffmpeg调试环境搭建

    大佬编写ffmpeg的书(建议看这个)

  • 相关阅读:
    【数据结构入门_链表】 Leetcode 83. 删除排序链表中的重复元素
    ​Black Hat 2022 聚焦软件供应链安全
    机器学习【Numpy】
    商品加入购物车逻辑实现
    FlinkSql详解
    关于微信二次分享,自定义分享参数不生效问题
    CD147单克隆抗体通过酰胺反应偶联到Dox-CMCh-BAPE聚合物胶束/CBZ-AAN-Dox的制备
    京东-黑客马拉松大赛复盘
    如何在 Android Studio 中重命名软件包名称
    微信小程序录音和头像上传
  • 原文地址:https://blog.csdn.net/qq_38832450/article/details/126988411