目录

一、准备 FFmpeg 库文件

二、创建 VS2019 C 项目

三、配置项目属性

四、编写测试代码

五、编译运行

六、常见问题解决


在 Visual Studio 2019 中编写 C 语言项目并引用 FFmpeg 库,需要手动配置头文件、库文件路径及链接依赖。以下是详细步骤:

一、准备 FFmpeg 库文件

  1. 下载预编译的 FFmpeg 开发包从 FFmpeg 官网或第三方镜像下载适用于 Windows 的 开发版本(dev) 和 共享版本(shared)

    • 官网地址:FFmpeg Official Builds(推荐选择 gyan.dev 或 BtbN 提供的 builds)

    • 下载文件:

      • ffmpeg-xxx-win64-dev.zip(包含头文件 .h 和库文件 .lib

      • ffmpeg-xxx-win64-shared.zip(包含动态链接库 .dll

  2. 解压文件将两个压缩包解压到同一个目录(例如 D:\ffmpeg),目录结构如下:

    D:\ffmpeg\
    ├─ include\        # 头文件(来自 dev 包)
    │  ├─ libavcodec\
    │  ├─ libavformat\
    │  └─ ...(其他库的头文件)
    ├─ lib\            # 静态链接库 .lib(来自 dev 包)
    │  ├─ avcodec.lib
    │  ├─ avformat.lib
    │  └─ ...
    └─ bin\            # 动态链接库 .dll(来自 shared 包)
       ├─ avcodec-59.dll
       ├─ avformat-59.dll
       └─ ...
    

二、创建 VS2019 C 项目

  1. 打开 VS2019,选择 “创建新项目”

  2. 选择 “空项目”(Empty Project),命名为 FFmpegDemo,选择保存路径,点击 “创建”。

  3. 在项目中添加 C 源文件:

    • 右键项目 → “添加” → “新建项” → 选择 “C++ 文件 (.cpp)”,命名为 main.c(注意后缀为 .c,确保以 C 语言编译)。

三、配置项目属性

右键项目 → “属性”,打开属性页,以下配置均需区分 “配置”(Debug/Release)和 “平台”(x64/x86),建议统一使用 x64(FFmpeg 64 位库更常见)。

1. 配置头文件路径(Include Directories)

  • 路径:配置属性 → C/C++ → 常规 → 附加包含目录

  • 点击右侧下拉框 → “编辑” → 添加 FFmpeg 的 include 目录(例如 D:\ffmpeg\include)。

2. 配置库文件路径(Library Directories)

  • 路径:配置属性 → 链接器 → 常规 → 附加库目录

  • 点击 “编辑” → 添加 FFmpeg 的 lib 目录(例如 D:\ffmpeg\lib)。

3. 配置链接依赖库(Additional Dependencies)

需要将用到的 FFmpeg 库文件(.lib)添加到链接器依赖中:

  • 路径:配置属性 → 链接器 → 输入 → 附加依赖项

  • 点击 “编辑” → 添加以下核心库(根据需求增减):

    avformat.lib
    avcodec.lib
    avutil.lib
    swscale.lib  # 如需图像缩放
    swresample.lib  # 如需音频重采样
    avfilter.lib  # 如需滤镜功能
    

4. 禁用 SDL 检查(避免编译错误)

FFmpeg 部分头文件可能与 VS 的安全检查冲突,需禁用 SDL 检查:

  • 路径:配置属性 → C/C++ → 预处理器 → 预处理器定义

  • 添加宏:_CRT_SECURE_NO_WARNINGS

5. 配置动态库路径(运行时依赖)

FFmpeg 依赖动态链接库(.dll),运行程序时需让系统找到这些 .dll

  • 方法 1:将 D:\ffmpeg\bin 目录添加到系统环境变量 PATH 中(需重启 VS 生效)。

  • 方法 2:将 bin 目录下的所有 .dll 文件复制到项目的输出目录(例如 x64\Debug 或 x64\Release,与生成的 .exe 同目录)。

四、编写测试代码

在 main.c 中编写一个简单的 FFmpeg 测试程序(例如打印 FFmpeg 版本):

#include <stdio.h>
#include <libavutil/version.h>
#include <libavcodec/version.h>
#include <libavformat/version.h>

int main() {
    printf("FFmpeg 版本: %d\n", av_version_info());
    printf("avutil 版本: %d\n", AVUTIL_VERSION_INT);
    printf("avcodec 版本: %d\n", AVCODEC_VERSION_INT);
    printf("avformat 版本: %d\n", AVFORMAT_VERSION_INT);
    return 0;
}

五、编译运行

  1. 确保解决方案平台为 x64(VS 工具栏可切换)。

  2. 点击 “生成” → “生成解决方案”,编译成功后,在输出目录生成 FFmpegDemo.exe

  3. 运行程序,若输出 FFmpeg 版本信息,则配置成功。

六、常见问题解决

  1. “无法打开包括文件: ‘libavutil/version.h’”→ 检查 “附加包含目录” 是否正确指向 ffmpeg/include

  2. “无法解析的外部符号”→ 检查 “附加库目录” 是否正确,且 “附加依赖项” 中已添加所需的 .lib 文件。

  3. 运行时提示 “找不到 avformat-59.dll”→ 确保 .dll 文件在系统 PATH 中,或已复制到 .exe 同级目录。

  4. 编译报错 “error C4996: ‘xxx’: This function is deprecated”→ 这是 FFmpeg 旧接口的警告,可忽略或改用新接口;若需屏蔽,在预处理器定义中添加 _CRT_NONSTDC_NO_DEPRECATE

通过以上步骤,即可在 VS2019 中成功引用 FFmpeg 库进行 C 语言开发。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐