Bootstrap

c++音视频学习环境搭建

本人是在windows上学习c++音视频,因此需要先下载安装MSYS2。

MSYS2允许在Windows系统模拟Linux环境,它的命令行界面可以很好地仿真Linux终端,所以在Windows系统上编译和执行FFmpeg程序需要通过MSYS2的控制台操作。



1、到https://github.com/msys2/msys2-installer/releases/下载MSYS2的安装包,打开该页面后,单击Assets文字以便展开安装包列表,接着单击MSYS2的Windows安装包链接,比如msys2-x86_64-20230318.exe,浏览器就开始下载Windows版本的安装文件。

我下载的是msys2-x86_64-20240727.exe这个版本。
在这里插入图片描述


2、MSYS2安装完毕后,打开安装目录下的msys2_shell.cmd,去掉该文件第17行代码的注释,也就是删除关键字rem,修改之后的代码如下:

set MSYS2_PATH_TYPE=inherit

在这里插入图片描述
之所以去掉该行代码的注释,是为了让MSYS2继承Windows系统的PATH环境变量,否则后面编译会报错“MicrosoftVisual Studio support requires Visual Studio 2013 Update2 or newer"。



3、通过MSYS2安装常用的编译工具。运行安装目录下的mingw64.exe,
输入以下命令安装以下工具:

pacman -S gcc make nasm pkg-config diffutils zlib vim unzip

在这里插入图片描述

另外,还要执行以下命令安装交叉编译工具链:

pacman -S mingw-w64-x86_64-toolchain

执行以上命令提示“Enter a selection (default=all):”的时候,按回车键表示安装列表上的所有组件。接着提示Proceedwith installation? [Y/n]的时候,输入Y表示确认安装操作。



4、安装好工具链可以在/mingw64/bin下找到相应的可执行程序,注意把该目录下的x86_64-w64-mingw32-gcc-ar.exe改名为x86_64-w64-mingw32-ar.exe,把x86_64-w64-mingw32-gcc-nm.exe改名为x86_64-w64-mingw32-nm.exe,也就是去掉这两个文件名中的-gcc,另外要把strip.exe改名为x86_64-w64-mingw32-strip.exe。



5、编译与安装FFmpeg。到https://github.com/BtbN/FFmpeg-Builds/releases下载Windows环境编译好的FFmpeg安装包,比如ffmpeg-master-latest-win64-gpl-shared.zip。
注意:要下载带Win64且带Shared的压缩包,因为带Shared的包提供了头文件和DLL动态库,而不带Shared的包只有可执行程序,没法用来编程开发。



6、把ffmpeg-master-latest-win64-gpl-shared.zip解压到指定目录,并将解压后的目录改名为ffmpeg,比如D:\Users\admin\MSYS2\usr\local\ffmpeg。



7、添加环境变量。右击Windows桌面上的“此电脑”图标,在弹出的快捷菜单中选择“属性”​,接着单击新页面左侧的“高级系统设置”链接,在弹出的“系统属性”窗口中单击下方的“环境变量”按钮,然后编辑系统变量列表中的PATH变量,给它添加三个目录:

第一个是FFmpeg的可执行程序及其动态库目录,比如E:\msys64\usr\local\ffmpeg\bin,该目录中主要有ffmpeg、ffplay、ffprobe等程序,以及若干DLL动态库。

第二个是MSYS2的可执行程序目录,比如E:\msys64\usr\bin,该目录主要有cp、env、ls、mv、ps、rm、tar等基本命令程序,还包括后面安装的gcc、g++、gdb、make、pkg-config等编译调试程序。

第三个是MinGW64位模式的可执行程序及其动态库目录,比如E:\msys64\mingw64\bin,虽然该目录中的.exe文件基本都能在usr\bin目录中找到,但是该目录的众多DLL文件在其他目录找不到,所以也要把它加进PATH变量。
之所以给PATH变量添加这三个目录,是为了在命令行输入相关命令时,Windows能够自动找到对应的可执行程序,并链接需要的DLL动态库。
在这里插入图片描述



8、执行测试命令。通过cmd输入以下命令,发现控制台回显如下的FFmpeg版本与编译器版本信息,这说明FFmpeg程序已成功运行。

ffmpeg -version

在这里插入图片描述

或者通过写c文件来调用测试:
在桌面创建一个名为helloffmpeg.c的文件,并写入以下测试代码:

#include <stdio.h>
#include <libavutil/avutil.h>

int main(int argc, char *argv[]) {
   av_log(NULL, AV_LOG_INFO, "Hello World\n");
   return 0;
}
然后在cmd下利用gcc进行编译,编译命令如下:
gcc D:\Users\admin\Desktop\helloffmpeg.c -o helloffmpeg -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavdevice -lavfilter -lavcodec -lavutil -lswscale -lswresample -lpostproc -lm

在这里插入图片描述




本文参考自书籍《FFmpeg开发实战:从零基础到短视频上线》。

;