首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Windows 上手 FFmpeg 開發環境建置完整教學:VS2013 專案設定、DLL 部署與除錯驗證

     編輯:關於C語言
 

FFmpeg 是跨平台音視頻處理的標準庫。在 Windows + Visual Studio 環境下建置開發環境,關鍵在於正確配置「標頭檔、匯入庫、執行期 DLL」三要素。本文以 VS2013 為例,提供可直接複製的逐步操作流程。

環境與下載準備

  • 作業系統:Windows 8.1/10/11(x64)
  • IDE:Visual Studio 2013/2015/2017/2019/2022(操作邏輯相同)
  • FFmpeg 官網下載頁:https://ffmpeg.org/download.html

三步驟取得必要檔案

  1. 源碼包:點擊首頁 Download → Snapshot 下載完整源碼(含 doc/examples 範例)。
  2. 32-bit Shared:ffmpeg--win32-shared.7z → 解壓取得 bin/ 下的 avcodec-*.dll、avformat-*.dll、avutil-*.dll、swresample-*.dll 等執行期 DLL。
  3. 32-bit Dev:ffmpeg--win32-dev.7z → 解壓取得 include/(標頭檔)與 lib/(匯入庫 *.lib)。

⚠️ 若專案為 x64,請下載對應 64-bit Shared/Dev 套件,並將專案平台設為 x64。

VS 專案建立與原始碼準備

  1. 新建專案:Visual C++ → Win32 Console Application,專案名 ffmpeg-test。
  2. 從源碼包 doc/examples/metadata.c 複製內容到 ffmpeg-test.cpp,微調:
// 原始 metadata.c 為 C 風格,C++ 需加 extern "C" 包含標頭
extern "C" {
#include 
#include 
}

int main(int argc, char* argv[]) {
    // 原範例邏輯:開啟媒體檔並打印 metadata
    // 需自行傳入媒體檔路徑 argv[1]
}

專案屬性關鍵設定(重點)

屬性頁面設定值
C/C++ → General → Additional Include Directories$(SolutionDir)..\ffmpeg-dev\include
Linker → General → Additional Library Directories$(SolutionDir)..\ffmpeg-dev\lib
Linker → Input → Additional Dependenciesavformat.lib;avutil.lib;avcodec.lib;swresample.lib
C/C++ → Code Generation → Runtime LibraryMulti-threaded DLL (/MD) 或 /MDd(需與 FFmpeg 建置模式一致)

Include 目錄設定 Library 目錄設定 依賴庫設定

DLL 部署:解決「找不到 xxx.dll」

將 32-bit Shared 包 bin/ 目錄下所有 *.dll 複製到專案輸出目錄(與 .exe 同層,即 ffmpeg-test/ 下)。

ffmpeg-test.sln
ffmpeg-test/
  ├── ffmpeg-test.vcxproj
  ├── ffmpeg-test.cpp
  ├── avcodec-58.dll
  ├── avformat-58.dll
  ├── avutil-56.dll
  ├── swresample-3.dll
  └── ... (其他 DLL)

最終目錄結構

建置與驗證

  1. 按 Ctrl+F5 或 F5 建置執行。
  2. 主控台輸出媒體檔資訊(格式、時長、串流編解碼器等)即成功。
  3. 執行結果範例

常見錯誤與解決

錯誤現象原因與對策
LNK2019 未解析的外部符號 av_*Library 目錄或 Additional Dependencies 未正確設定,或 32/64 位元不匹配。
執行時彈窗「找不到 avformat-58.dll」DLL 未放在 exe 同目錄,或 PATH 未包含 DLL 目錄。
C4996 avcodec_alloc_frame 已棄用改用 av_frame_alloc(),參見下一篇文章。
Runtime Library 不匹配(/MT vs /MD)專案與 FFmpeg 必須同為 /MD(動態 CRT)或同為 /MT(靜態 CRT)。

進階:改用 CMake + vcpkg/Conan 管理依賴

現代專案建議採用 vcpkg install ffmpeg:x86-windows 或 Conan 自動抓取預建二進制,CMakeLists.txt 僅需 find_package(FFmpeg REQUIRED) 即可自動配置 Include/Lib/DLL,避免手動設定錯誤。

 
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved