【问题标题】:how to use ffmpeg with MSVC++ to decode a video?如何使用 ffmpeg 和 MSVC++ 解码视频?
【发布时间】:2013-07-04 09:35:49
【问题描述】:

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

【问题讨论】:

    标签: video ffmpeg decode


    【解决方案1】:

    你有两个选择:

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

    如果我是你,我会选择第二个选项。这是我开始体验 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我的问题,其中包含一个代码

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 2016-09-03
      • 2012-08-03
      • 2016-06-16
      • 2011-02-21
      相关资源
      最近更新 更多