1、安装g++

macOS系统中默认的C/C++编译器是clang/clang++
命令行使用gcc/g++或者clang/clang++来执行命令时
都是调用clang/clang++编译器
想使用gcc/g++编译器的话,可以自己安装,也可以用默认的

查看g++版本:

➜  ~ g++ --version
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: x86_64-apple-darwin22.1.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

2、安装CMake

brew install cmake

3、安装VSCode

3.1、在https://code.visualstudio.com下载VSCode压缩文件;
3.2、将解压后得到的以.app为后缀的文件,拖到访达应用程序文件夹内;
3.3、安装VSCode扩展:双击打开app,可发现mac版已默认安装了C/C++、CMake Tools

请添加图片描述

4、安装ffmpeg

准备目录:

mkdir ffmpeg
cd ffmpeg
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
mkdir build #稍后会将这个目录配置为--prefix,sudo make install会将编译结果如头文件、库等放到这里
cd ffmpeg

安装基础工具:

brew install pkg-config nasm

根据编码需要安装扩展库:

brew install x264
brew install fdk-aac
brew install sdl2

配置ffmpeg:

./configure \
  --prefix=/Users/tangqinghuan/ffmpeg/build \
  --enable-shared  --enable-static \
  --enable-gpl --enable-nonfree \
  --enable-libx264 \
  --enable-libfdk-aac \
  --enable-sdl2 \
  --enable-ffplay \
  --extra-cflags="-I/usr/local/include" \
  --extra-ldflags="-L/usr/local/lib"\

查询某项配置结果(可选):

grep -i "x264" config.h

编译安装ffmpeg:

make -j8
sudo make install

安装完成后可查看结果:

➜  build pwd
/Users/tangqinghuan/ffmpeg/build
➜  build ls
bin     ffbuild include lib     share

5、在VSCode中调用ffmpeg

新建空文件夹作为项目根目录,在VSCode中打开

新建CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(MyFFmpegApp)

set(CMAKE_CXX_STANDARD 17)

# 设置 FFmpeg 的安装路径
set(FFMPEG_DIR /Users/tangqinghuan/ffmpeg/build)

# 查找 FFmpeg 组件
find_path(FFMPEG_INCLUDE_DIR libavcodec/avcodec.h PATHS ${FFMPEG_DIR}/include)
find_library(AVCODEC_LIBRARY avcodec PATHS ${FFMPEG_DIR}/lib)
find_library(AVFORMAT_LIBRARY avformat PATHS ${FFMPEG_DIR}/lib)
find_library(AVUTIL_LIBRARY avutil PATHS ${FFMPEG_DIR}/lib)
find_library(SWSCALE_LIBRARY swscale PATHS ${FFMPEG_DIR}/lib)

# 添加可执行文件
add_executable(my_app main.cpp)

# 包含头文件目录
target_include_directories(my_app PRIVATE ${FFMPEG_INCLUDE_DIR})

# 链接库
target_link_libraries(my_app
    ${AVCODEC_LIBRARY}
    ${AVFORMAT_LIBRARY}
    ${AVUTIL_LIBRARY}
    ${SWSCALE_LIBRARY}
)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

新建main.cpp:(#include会有红色波浪线提示找不到文件,可以不用管,这是VSCode的智能提示找不到,不是CMake找不到,这个在下一步配置)

extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/avutil.h>
}

#include <iostream>

int main() {
    std::cout << "FFmpeg version: " << av_version_info() << std::endl;
    std::cout << "AVCodec version: " << AV_VERSION_MAJOR(avcodec_version()) << "."
              << AV_VERSION_MINOR(avcodec_version()) << "."
              << AV_VERSION_MICRO(avcodec_version()) << std::endl;
    
    // 测试格式支持
    AVFormatContext* formatContext = avformat_alloc_context();
    if (!formatContext) {
        std::cerr << "Failed to allocate format context" << std::endl;
        return 1;
    }
    
    std::cout << "FFmpeg initialized successfully!" << std::endl;
    avformat_free_context(formatContext);
    
    return 0;
}

编译:

mkdir build
cd build
cmake ../
make

运行:

➜  build ./my_app
FFmpeg version: N-121161-gb5e0d9f648
AVCodec version: 62.15.100
FFmpeg initialized successfully!

配置VSCode:

单击最上方搜索框->显示并运行命令->C/C++:编辑配置(JSON)
请添加图片描述
配置include path:——和CMakeLists.txt中的一致

            "includePath": [
                "${workspaceFolder}/**",
                "/Users/tangqinghuan/ffmpeg/build/include"
            ]

然后可以正常跳转到头文件。

内附资源

如果git clone连不上,可以直接下载本文章绑定资源——ffmpeg-master.zip(ffmpeg源代码,此源代码版本较新,是2025年在代码仓下载)

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐