【C++音视频】在mac搭建ffmpeg开发环境(内附资源)
·
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年在代码仓下载)
更多推荐



所有评论(0)