使用 FFmpeg,您可以:
- 使用预构建的 .lib/.dll 文件,使用 Visual Studio 生成的二进制文件将依赖于 av*.dll 文件
- 使用非 Microsoft 编译器将 FFmpeg 从源代码编译成静态库,然后链接到您的 Visual Studio 项目(在这种情况下请注意 LGPL/GPL 许可证)
您按照上述第 1 项构建了您的项目。您必须使用和重新分发依赖于 av*.dll 的文件和您的二进制文件才能使其正常工作。
Zeranoe 上的“静态”表示库静态链接到像 ffmpeg.exe 这样的二进制文件中。不要将此与链接到二进制文件的静态 .lib 库混淆。 Zeranoe 不提供此类服务。
在Zeranoe 你会发现这样的档案:
- “共享”ffmpeg-20120726-git-236ecc3-win32-shared.7z:
bin/avcodec-54.dll
bin/avutil-51.dll
- 等
- “开发”ffmpeg-20120726-git-236ecc3-win32-dev.7z:
lib/avcodec.lib
lib/avutil.lib
“共享”存档有 FFmpeg,它带有到 DLL 库的动态链接。 “Dev”存档具有 lib 文件,您可以在项目中使用这些文件来链接到它们,以及 ffmpeg.exe 在共享存档中所做的方式。
所以,您的 Visual Studio 项目可以像这样简单 (browse full source here):
extern "C"
{
// NOTE: Additional directory ..\zeranoe.com\dev\include gets to the files
#include "libavcodec\avcodec.h"
}
// NOTE: Additional directory ..\zeranoe.com\dev\lib gets to the files
#pragma comment(lib, "avcodec.lib")
// NOTE: Be sure to copy DLL files from ..\zeranoe.com\shared\bin to the directory of
// the FFmpegApp.exe binary
int _tmain(int argc, _TCHAR* argv[])
{
_tprintf(_T("Trying avcodec_register_all... "));
avcodec_register_all();
_tprintf(_T("Done.\n"));
return 0;
}
您将“Dev”存档解压缩到 Visual Studio 项目的 dev 子目录中,并在附加包含路径中添加 dev\include。这足以构建二进制文件,它将依赖于av*.dll:
这是您提取“共享”存档并将 DLL 从其bin 复制到二进制目录的时候。您的应用将从那里开始工作:
C:\FFmpegApp\Release>FFmpegApp.exe
Trying avcodec_register_all... Done.
2016 年 1 月 20 日更新:存储库中的项目已升级到 Visual Studio 2013(旧版 VS 2010 代码)并对照当前的 Zeranoe 构建进行检查。样品和说明保持良好状态。
请注意,Visual Studio 中的 Win32 构建假定您使用来自 Zeranoe 的 32 位文件。要构建 64 位版本,请下载相应的文件并分别设置 Visual C++ 项目,以构建 x64(或者,最好同时下载,设置两个配置并分别配置 include/lib 路径)。位数不匹配会导致错误,在下面的 cmets 中有提到。
2021 年 7 月 20 日更新:(来自下面的 cmets)Zeranoe 版本不再可用。 Windows builds by BtbN 是一个很好的官方认可的替代方案。本教程需要(...)-win64-gpl-shared.zip 或(...)-win64-lgpl-shared.zip 文件。