【发布时间】:2013-07-04 09:35:49
【问题描述】:
我想要做的是使用 msvc++ 制作一个示例应用程序,它将输入作为视频文件并对其进行解码。我希望使用我的应用程序中使用的 ffmpeg 函数来完成所有解码。我阅读了 dranger 的教程但无法实现它,非常感谢任何帮助。
【问题讨论】:
我想要做的是使用 msvc++ 制作一个示例应用程序,它将输入作为视频文件并对其进行解码。我希望使用我的应用程序中使用的 ffmpeg 函数来完成所有解码。我阅读了 dranger 的教程但无法实现它,非常感谢任何帮助。
【问题讨论】:
你有两个选择:
如果我是你,我会选择第二个选项。这是我开始体验 ffmpeg 时所做的事情。如果您从未构建过源代码,构建可能会很痛苦。
您可以从here 找到最新的 ffmpeg 构建(您应该下载“dev”版本)。
将此文件放入 VisualStudio20xx/Projects/yourProjectName/yourProjectName/
下载后,您应该向 MSVC 显示标头和 .lib 文件的目的地。 去 项目 -> 属性 -> 配置属性 -> C/C++ -> 常规 然后将“其他包含目录”设置为 ffmpeg/include
这应该设置 ffmpeg 的包含文件。
对于 .lib 文件:
项目 -> 属性 -> 配置属性 -> 链接器 -> 常规 将“附加库目录”设置为 ffmpeg/lib
这应该设置 .lib 文件。
现在应该可以包含 ffmpeg 库了
extern "C"
{
#include <libavcodec/avcodec.h>
}
*(!) 如果您在执行这些步骤后遇到数千个 LNK2001 链接器错误,您应该为您的包含添加一些 pragma cmets。我不确定这些 cmets 是做什么的,你可以搜索它。但它是 MSVC 理解的东西。
例如,
#pragma comment (lib,"avcodec.lib")
这个杂注注释也应该在外部“C”范围内。
*(!)如果你得到这个编译错误:'UINT64_C': identifier not found
您可以使用此宏作为解决方法:
#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif
现在关于编码/解码的东西,你可以检查this我的问题,其中包含一个代码
我从艰难的过程中学到了东西,但代码的注释很好,因此我认为你可以理解它是如何/如何克服这个过程的。
【讨论】: