【音视频开发】第二章 FFmpeg 开发环境

devtools/2025/3/18 0:46:54/

音视频开发】第二章 FFmpeg 开发环境

文章目录

  • 音视频开发】第二章 FFmpeg 开发环境
  • 一、Window 安装开发环境
    • 1.FFmpeg 命令行环境搭建
    • 2.Visual Studio 和 Qt 安装
    • 3.CDB 调试器安装
    • 4.Windows 编译 FFmpeg
    • 5.编译第三方库
    • 6.Qt 使用 MSVC 调用编译好的 ffmpeg 库

一、Window 安装开发环境

1.FFmpeg 命令行环境搭建

FFMPEG 官网:ffmpeg.org

下载以下文件:
源码:ffmpeg-x.x.x.tar.bz2
Shared:ffmpeg-x.x.x-winxx-shared.zip(包含 FFMPEG 的 dll 库文件)
Static:ffmpeg-x.x.x-winxx-static.zip(包含了 FFMPEG 的官方文档)
Dev:ffmpeg-x.x.x-winxx-dev.zip(包含 FFMPEG 的 lib 文件/头文件,以及 example 范例)

拷贝可执行文件到 C://Windows
在这里插入图片描述

  • ffmpeg转码
  • ffplay播放器
  • ffprobe分析码流成分

拷⻉动态链接库到C:\Windows\SysWOW64
在这里插入图片描述

输⼊ffmpeg -version测试
在这里插入图片描述

  • configuration表示开启/关闭了哪些配置

2.Visual Studio 和 Qt 安装

Qt 下载地址:download.qt.io/archive/online_installers
在这里插入图片描述
这里下载的是 Qt 的在线安装程序
选择 Qt 版本时,需要注意 Visual Studio 和 Qt 的版本是否兼容

配置 Visual Studio 环境变量
D:\Program Files\VisualStudio\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64
在这里插入图片描述

3.CDB 调试器安装

MSVC 编译器使用 windbg 下的 cdb 调试器,所以需要安装 windbg
https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools

在这里插入图片描述

4.Windows 编译 FFmpeg

安装 MSYS2
MSYS2(Minimal System 2)是一个开源的软件发行环境和软件包管理器,主要用于在 Windows 上提供类似于 Unix/Linux 的开发体验。它是基于 Cygwin、MSYS(Minimal SYStem)和 MinGW-w64 项目的改进和扩展。MSYS2 提供了一个类 Unix 环境,以及支持 Windows 原生应用程序构建的工具链。

下载地址:www.msys2.org

在这里插入图片描述
在这里插入图片描述
安装完成之后,先把安装目录下 msys2_shell.cmd 中的

rem set MYS2_PATH_TYPE=inherit

改成

set MYS2_PATH_TYPE=inherit

这是为了将 VS 的环境继承给 MSYS2

MSYS2 可以选择 msys 或者 MinGW -w64 环境来编译,不过在 msys 下使用 gcc 编译出来的 exe 和 dll 依赖 msys-2.0.dll,而 MinGW -w64 下编译出来的文件不需要依赖这个 dll,从程序的运行效率来看,不依赖这个 dll 的程序的效率更高,所以选择 MinGW -w64 来编译更佳。

修改 pacman 的源
pacman 是一个软件包管理器,用来在 MSYS2 中安装软件,但是默认的国外源,下载安装包时非常慢,所以需要修改为国内源,可以选择中科大的源

在这里插入图片描述
编辑 /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 安装目录下输入以下命令,分别打开 64 位和 32 位的 shell
在这里插入图片描述

然后在 msys2 的 shell 中执行

pacman -Sy

在这里插入图片描述
刷新软件包数据

安装编译环境
安装 mingw-w64
打开 MSYS2 MinGW64,在 shell 窗口中输入:

pacman -S mingw-w64-x86_64-toolchain

输入回车默认全部安装

安装 git

pacman -S git

安装 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

重命名 link.exe
重命名 msys64/usr/bin/link.exe 为 msys64/usr.bin/link.bak,避免和 MSVC 的 link.exe 冲突

安装 YASM

pacman -S nasm
pacman -S yasm

检查编译环境

which cl link yasm cpp

看返回结果,没有 no 的结果一般就没问题

修改支持中文显示
窗口右键 -> Options -> Text,然后 locale 选择:zh_CN,Character set 选择 UTF-8
在这里插入图片描述

5.编译第三方库

下载和编译 x264

www.videolan.org/developers/x264.html

在这里插入图片描述
解压到此处
在这里插入图片描述
进入 x264 目录

./configure --prefix=/home/${userName}/ffmpeg/build/libx264 --host=x86_64-w64-mingw32 --enable-shared --enable-static --extra-ldflags=-Wl,–output-def=libx264.def
make
make install

生成 libx264.lib
上面编译出来的结果没有包含 lib 文件,需要自己手动生成

cp ./libx264.def /home/${username}/ffmpeg/build/libx264/lib
cd /home/${username}/ffmpeg/build/libx264/lib
lib /machine:X64 /def:libx264.def

如果想在程序中直接使用 x264,将 include 中的 .h 头文件、libx264.lib 和 libx264-165.dll 复制到项目中对应位置,并且在程序中添加头文件

下载和编译 fdk-aac
https://sourceforge.net/projects/opencore-amr/files/fdk-aac

./autogen.sh
./configure --prefix=/home/${username}/ffmpeg/build/libfdk-aac --enable-static --enable-shared
make
make install

下载和编译 mp3
https://sourceforge.net/projects/lame

./configure --prefix=/home/${username}/ffmpeg/build/libmp3lame --disable-shared --disable-frontend --enable-static
make
make install

下载和编译 libvpx
https://github.com/webmproject/libvpx

./configure --prefix=/home/${username}/ffmpeg/build/libvpx --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make
make install

下载和编译 ffmpeg
https://gitee.com/mirrors/ffmpeg

./configure --prefix=/home/${username}/ffmpeg/build/ffmpeg --arch=x86_64 --enable-shared --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libvpx --enable-libx264 --enable-libmp3lame --extra-cflags=“-I/home/${username}/ffmpeg/build/libfdk-aac/include” --extra-ldflags=“-L/home/${username}/ffmpeg/build/libfdk-aac/lib” --extra-cflags=“-I/home/${username}/ffmpeg/build/libvpx/include” --extra-ldflags=“-L/home/${username}/ffmpeg/build/libvpx/lib” --extra-cflags=“-I/home/${username}/ffmpeg/build/libx264/include” --extra-ldflags=“-L/home/${username}/ffmpeg/build/libx264/lib” --extra-cflags=“-I/home/${username}/ffmpeg/build/libmp3lame/include” --extra-ldflags=“-L/home/${username}/ffmpeg/build/libmp3lame/lib”
make
make install

!注意 pkg-config

6.Qt 使用 MSVC 调用编译好的 ffmpeg 库

使用 MSVC 和 qmake 创建一个 C 项目
在这里插入图片描述

点击执行 ffmpeg.exe,再使用 Everything 搜索缺失的文件,将动态链接库拷贝进上一步 build 完成的 ffmpeg 文件夹的 bin 目录
在这里插入图片描述

将 ffmpeg 文件夹拷贝进项目根目录
在这里插入图片描述

修改 ffmpeg_c.pro 文件
在这里插入图片描述

编写测试程序
在这里插入图片描述

执行测试程序
在这里插入图片描述

再新增一个 C++ 项目,进行验证
在这里插入图片描述


http://www.ppmy.cn/devtools/167951.html

相关文章

用C# Newtonsoft.Json库实现JSON数据中某个字段值的提取

在C#中,可以使用Newtonsoft.Json库(也称为Json.NET)来处理JSON数据。这个库提供了非常方便的方法来解析和操作JSON数据。下面将通过几个示例来展示如何从JSON格式的文本中提取某个字段的值,并将其存储到字符串、列表或其他泛型集合…

【从零开始学习计算机科学】数据库系统(八)数据库的备份和恢复

【从零开始学习计算机科学】数据库系统(八)数据库的备份和恢复 备份和恢复事务故障系统故障磁盘故障其他故障故障的恢复日志日志缓冲区事务故障的恢复系统故障的恢复系统故障的恢复步骤检查点检查点的执行过程备份日志文件备份远程备份恢复策略事务故障恢复策略系统崩溃恢复策…

kotlin中jetpack组件(目录总结)

架构组件 用于帮助开发者设计稳健、可测试且易于维护的应用架构。 ViewModel:负责管理与 UI 相关的数据,在配置更改(如屏幕旋转)时保持数据的一致性。它将 UI 逻辑和业务逻辑分离,使代码更易于维护和测试。例如&#…

区块链技术与 DICT(数字化信息与通信技术)的结合

区块链技术与 DICT(数字化信息与通信技术)的结合,为解决数据安全和信任问题提供了创新的解决方案。区块链的核心特性——去中心化、不可篡改、透明可追溯——使其成为 DICT 生态中数据管理和信任建立的重要工具。以下是区块链技术如何与 DICT…

钉钉项目报销与金蝶系统高效集成技术解析

钉钉报销【项目报销类】集成到金蝶付款单【画纤骨】的技术实现 在企业日常运营中,数据的高效流转和准确对接是提升业务效率的关键。本文将分享一个具体的系统对接集成案例:如何将钉钉平台上的项目报销数据无缝集成到金蝶云星空的付款单系统中。本次方案…

IvorySQL 4.4 发布

IvorySQL 4.4 已于 2025 年 3 月 10 日正式发布。新版本全面支持 PostgreSQL 17.4,新增多项新功能,并修复了已知问题。 增强功能 PostgreSQL 17.3 增强功能 加强 PQescapeString 及相关函数对无效编码输入字符串的防护。恢复在连接请求中出现的数据库…

SQL中查询日期的常见方式+应用场景+效率对比

在SQL中&#xff0c;查询日期区间是常见的需求&#xff0c;常用的方式包括&#xff1a; 使用 > 和 <使用 BETWEEN AND使用 IN 以下是这些方式的详细说明、SQL示例及其效率对比。 1. 使用 > 和 < 通过明确指定日期的上下限来查询区间。 SQL示例 SELECT * FROM …

Docker 容器指标搜集工具cAdvisor

cAdvisor安装 docker run \--volume/:/rootfs:ro \--volume/var/run:/var/run:ro \--volume/sys:/sys:ro \--volume/var/lib/docker/:/var/lib/docker:ro \--volume/dev/disk/:/dev/disk:ro \--publish8080:8080 \--detachtrue \--namecadvisor \google/cadvisor:latest访问页…