0

我想做的是使用 msvc++ 制作一个示例应用程序,它将输入作为视频文件并对其进行解码。我希望使用我的应用程序中使用的 ffmpeg 函数完成所有解码。我阅读了 dranger 的教程但无法实现它,任何帮助将不胜感激。

4

1 回答 1

0

你有两个选择:

  1. 您可以自己构建源代码。
  2. 您可以使用 dll 下载“已构建的版本”。

如果我是你,我会选择第二个选项。这是我开始体验 ffmpeg 时所做的事情。如果您从未构建过源代码,构建可能会很痛苦。

你可以从这里找到最新的 ffmpeg 版本 (你应该下载“开发”版本)。

将此文件放入VisualStudio20xx/Projects/yourProjectName/yourProjectName/

下载后,您应该向 MSVC 显示标头和 .lib 文件的目的地。转到项目 -> 属性 -> 配置属性 -> C/C++ -> 常规,然后将“其他包含目录”设置为 ffmpeg/include

这应该为 ffmpeg 设置包含文件。

对于 .lib 文件:

项目 -> 属性 -> 配置属性 -> 链接器 -> 常规设置“附加库目录”为 ffmpeg/lib

这应该设置 .lib 文件。

现在应该能够通过以下方式包含 ffmpeg 库

extern "C" 
{
     #include <libavcodec/avcodec.h>
}

*(!)如果您在这些步骤之后收到数千个 LNK2001 链接器错误,您应该为您的包含添加一些编译指示注释。我不确定这些评论是做什么的,你可以搜索一下。但它是 MSVC 理解的东西。

例如,

#pragma comment (lib,"avcodec.lib")

这个 pragma 注释也应该在外部“C”范围内。

*(!)如果你得到这个编译错误:'UINT64_C': identifier not found

您可以使用此宏作为解决方法:

#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif 

现在关于编码/解码的东西,你可以检查我的这个问题,其中包含一个代码

  1. 将文件解复用为数据包
  2. 将数据包解码为帧
  3. 将帧编码成包
  4. 将数据包复用到一个文件中。

我从艰难的过程中学到了东西,但代码的注释很好,因此我认为你可以理解它究竟是如何/如何克服这个过程的。

于 2013-07-04T13:22:16.363 回答