Windows ffmpeg 环境搭建

1、FFmpeg命令行环境搭建

fmpeg-4.2.1-win32-shared.zip:
https://download.csdn.net/download/weixin_45715405/86738165

解压ffmpeg-4.2.1-win32-shared.zip

拷贝可执行文件到C:\Windows
拷贝动态链接库到C:\Windows\SysWOW64

在这里插入图片描述
在这里插入图片描述
打开cmd命令行窗口

输入ffmpeg -version测试,打印版本号4.2.1即可

在这里插入图片描述

2、QT安装使用FFMPEG

下载地址:http://download.qt.io/official_releases/qt/5.10/5.10.1/
直接下载地址:http://iso.mirrors.ustc.edu.cn/qtproject/archive/qt/5.10/5.10.1/qt-opensource-windows-x86-5.10.1.exe

引用FFMPEG库

将ffmpeg-4.2.1-win32-dev拷贝到qt項目目录下

在这里插入图片描述

win32 {
INCLUDEPATH += $$PWD/ffmpeg-4.2.1-win32-dev/include
LIBS += $$PWD/ffmpeg-4.2.1-win32-dev/lib/avformat.lib   \
        $$PWD/ffmpeg-4.2.1-win32-dev/lib/avcodec.lib    \
        $$PWD/ffmpeg-4.2.1-win32-dev/lib/avdevice.lib   \
        $$PWD/ffmpeg-4.2.1-win32-dev/lib/avfilter.lib   \
        $$PWD/ffmpeg-4.2.1-win32-dev/lib/avutil.lib     \
        $$PWD/ffmpeg-4.2.1-win32-dev/lib/postproc.lib   \
        $$PWD/ffmpeg-4.2.1-win32-dev/lib/swresample.lib \
        $$PWD/ffmpeg-4.2.1-win32-dev/lib/swscale.lib
}
#include <stdio.h>

#include "libavutil/avutil.h"

int main()
{
    printf("Hello FFMPEG, version is %s\n", av_version_info());

    return 0;
}

在这里插入图片描述

3、Windows编译FFmpeg

MSYS2 (Minimal SYStem 2)是⼀个MSYS的独⽴改写版本,主要⽤于 shell 命令⾏开发环境。同时它也 是⼀个在Cygwin(POSIX 兼容性层) 和 MinGW-w64(从"MinGW-⽣成")基础上产⽣的,追求更好的互操 作性的 Windows 软件。 MSYS2 是MSYS的⼀个升级版,准确的说是集成了panman和Mingw-64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 ⼯具链。与MSYS最⼤的区别是移植了Arch linux的软件包管理系统Pacman(其实是与Cygwin的区别)。

  1. 下载安装MSYS2(按照官⽹安装到⾃⼰指定的⽬录下)
  2. 安装完成之后,先把安装⽬录下的msys2_shell.cmd中注释掉的 rem set MSYS2_PATH_TYPE=inherit 改成 set MSYS2_PATH_TYPE=inherit ,这是为了将vs的环境继 承给MSYS2。
    MSYS2可以选择msys或者MinGW-w64环境来编译,不过在msys下使⽤gcc编译出来的exe和dll依赖 msys-2.0.dll,⽽MinGW-w64下编译出来的⽂件不需要依赖这个dll,从程序的运⾏效率来看,不依赖这 个dll的程序的效率应该更⾼。所以选择MinGW-w64来编译更佳

下载地址:https://www.msys2.org/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装完成之后,先把安装⽬录下的msys2_shell.cmd中注释掉的 rem set MSYS2_PATH_TYPE=inherit 改成 set MSYS2_PATH_TYPE=inherit ,这是为了将vs的环境继 承给MSYS2
在这里插入图片描述

修改pacman的源

pacman是⼀个软件包管理器,⽤来在MSYS2中安装软件,但是默认的国外的源下载安装包时⾮常缓慢, ⼤概只有⼗⼏⼆⼗KB的速度,⽽且还容易下载中断出错,所以需要修改为国内源,国内源可以选择中科⼤ 的源。 按照MSYS2镜像提示修改。具体如下:

在这里插入图片描述
注意:是在⽂件夹打开⽂件进⾏编辑,不是在shell窗⼝编辑。
编辑 /etc/pacman.d/mirrorlist.mingw32 ,在⽂件开头添加:

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

编辑 /etc/pacman.d/mirrorlist.mingw64 ,在⽂件开头添加:

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

编辑 /etc/pacman.d/mirrorlist.msys ,在⽂件开头添加:

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

启动命令⾏窗⼝,在窗⼝中输⼊:

#进⼊msys2安装⽬录
cd c:\msys64

#如果要打开msys2的mingw64窗⼝
msys2_shell.cmd -mingw64

#如果要打开msys2的msys窗⼝
#msys2_shell.cmd

然后在msys2的shell中执⾏:(更新)
pacman -Sy

在这里插入图片描述

安装编译环境

gcc编译器、git等 msys2 遇到两类开发环境: 1. MSYS2 ⾃带的开发环境,安装的包叫 msys2-devel 2. MinGW-w64 的安装
这两者有什么区别呢? ⼀⾔以蔽之,前者编译出来的可执⾏⽂件,要依赖 MSYS2 提供的动态链接库,⽽后者不需要。下⾯详细 说明⼀下: (1) MSYS2 下的 gcc 编译环境,编译的可执⾏⽂件要依赖于 msys-2.0.dll,这个 DLL 提供了 Linux 下编程的提供的函数和接⼝,例如 fork 函数。 这个编译环境对于编译基于 Linux 下编写的软件,是⾮常适合的。例如编译 GNU 提供的各种⼯具。例 如,你想编译最新版本的 GNU grep ⼯具,MSYS2 下的这个环境是⾮常适合的。 (2)⽤ MinGW64 的编译环境,不再依赖于 msys-2.0.dll,如果源代码就是基于 windows 开发的,那 使⽤ MinGW 的编译环境⽐较好,编译出来的可执⾏⽂件,不⽤再依赖 MSYS 提供的动态链接库。当然, 前提是代码中不能使⽤ Linux 的东⻄,即 POSIX 的那套东⻄。

安装mingw-w64然后默认全部安装即可(直接回⻋)

pacman -S mingw-w64-x86_64-toolchain

安装git:任⼀⽅式打开shell窗⼝输⼊

pacman -S git

安装make等⼯具(如果需要编译出ffplayer的话,还需要安装SDL)

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
pacman -S mingw-w64-x86_64-SDL2

编译环境的其他准备⼯作

1.重命名link.exe 重命名 msys64/usr/bin/link.exe 为 msys64/usr/bin/link.bak , 避免和MSVC 的link.exe抵 触

下载和安装YASM

 pacman -S nasm
 pacman -S yasm

检查编译环境⼯具(mingw64的shell窗⼝输⼊,需要提前安裝好vs2015,配置環境變量)

which cl link yasm cpp

修改⽀持中⽂显示
窗⼝右键->Options->Text,然后locale选择:zh_CN,Character set 选择 UTF-8

编译第三⽅库

将下载下的放置于/home/Administrator/ffmpeg,把第三⽅库编译的库⽂件放在 /home/Administrator/ffmpeg/build

下载和编译x264

 git clone http://git.videolan.org/git/x264.git
 或者⽤码云的链接
 git clone https://gitee.com/mirrors_addons/x264.git

cd进⼊x264⽬录下:

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

make
make install

下载fdk-aac

git clone --depth 1 https://gitee.com/mirrors/fdk-aac.git
cd fdk-aac
./autogen.sh
./configure --prefix=/home/Administrator/ffmpeg/build/libfdk-aac --enable-static --enable-shared
make -j4
make install

下载编译mp3

git clone --depth 1 https://gitee.com/hqiu/lame.git
cd lame/
./configure --prefix=/home/Administrator/ffmpeg/build/libmp3lame --disable-shared --disable-frontend --enable-static
make 
make install

下载编译libvpx

git clone --depth 1 https://github.com/webmproject/libvpx.git
cd libvpx
./configure --prefix=/home/Administrator/ffmpeg/build/libvpx --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm

make 
make install

下载和编译ffmpeg

git clone https://gitee.com/mirrors/ffmpeg.git
git checkout remotes/origin/release/4.2
cd ffmpeg/

创建⼀个build.sh

./configure \
--prefix=/home/Administrator/ffmpeg/build/ffmepg-4.2 \
--arch=x86_64 \
--enable-shared \
--enable-gpl \
--enable-libfdk-aac \
--enable-nonfree \
--enable-libvpx \
--enable-libx264 \
--enable-libmp3lame \
--extra-cflags="-I/home/Administrator/ffmpeg/build/libfdk-aac/include" \
--extra-ldflags="-L/home/Administrator/ffmpeg/build/libfdk-aac/lib" \
--extra-cflags="-I/home/Administrator/ffmpeg/build/libvpx/include" \
--extra-ldflags="-L/home/Administrator/ffmpeg/build/libvpx/lib" \
--extra-cflags="-I/home/Administrator/ffmpeg/build/libx264/include" \
--extra-ldflags="-L/home/Administrator/ffmpeg/build/libx264/lib" \
--extra-cflags="-I/home/Administrator/ffmpeg/build/libmp3lame/include" \
--extra-ldflags="-L/home/Administrator/ffmpeg/build/libmp3lame/lib"
sh build_ffmpeg.sh
make -j4
make install

4、 QT使⽤MSVC2015 64bit调⽤我们编译的ffmpeg 库

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.c

INCLUDEPATH += \
    $$PWD/ffmepg-4.2/include


LIBS += $$PWD/ffmepg-4.2/bin/avformat.lib \
    $$PWD/ffmepg-4.2/bin/avcodec.lib \
    $$PWD/ffmepg-4.2/bin/avdevice.lib \
    $$PWD/ffmepg-4.2/bin/avfilter.lib \
    $$PWD/ffmepg-4.2/bin/avutil.lib \
    $$PWD/ffmepg-4.2/bin/swresample.lib \
    $$PWD/ffmepg-4.2/bin/swscale.lib

#include <stdio.h>
#include "libavutil/avutil.h"
int main()
{
    printf("Hello FFMPEG, version is %s\n", av_version_info());
    return 0;
}

需要將編譯完成的ffmpeg拷貝到項目目錄下,通過啓動ffmpeg來確認需要的dll,然後通過Everything去找到所在dll,然後拷貝到運行目錄下
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

讳疾忌医丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值