为Visual Studio开发构建FFMPEG

时间:2016-07-28 11:00:09

标签: c++ visual-studio-2013 ffmpeg

我正在尝试在Visual Studio 2013 C ++软件中使用ffmpeg(最终作为OpenCV项目的一部分) - 但是现在我只是想尝试获得基本的FFMPEG功能。通常,在Visual Studio中构建时,我使用多线程DLL运行时库构建64位软件。我使用http://ffmpeg.org/platform.html#Windows上的“本地Windows编译使用... MinGW-w64”的一般说明构建了ffmpeg(我提供了一系列更详细的步骤,我在下面介绍......)。

在我的系统上构建ffmpeg软件后,我尝试在Visual Studio 2013中创建一个简单的“hello world”项目。具体来说,我尝试实现http://dranger.com/ffmpeg/tutorial01.html处提供的初始教程文件。在构建项目时,我收到错误:

  

c:\ msys64 \ usr \ local \ ffmpeg \ libavutil \ common.h(45):致命错误C1083:不能   打开包含文件:'libavutil / avconfig.h':没有这样的文件或目录

以下是我为构建ffmpeg和创建我的基本Visual Studio项目所采取的详细步骤:

============建立ffmpeg ===============

  1. http://msys2.github.io
  2. 下载并安装了msys2-x86_64-20160205.exe
  3. update-core更新Msys2安装
  4. pacman -Suu(两次)以完成更新(按照有关更新快捷方式的说明等)。
  5. 然后我退出MSys2 shell并打开MinGW-w64 Win64 Shell。在这个新的shell中:
  6. 使用pacman -S <package-name>安装了以下软件包我安装的软件包列表是:make,pkg-config,diffutils,mingw-w64-x86_64-yasm,mingw-w64-x86_64-gcc,mingw-w64-x86_64 -SDL,git
  7. 然后我进入cd /usr/local
  8. git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
  9. 我想在这个MSys64文件夹中构建ffmpeg库'out-of-tree'。因此,在我的Windows机器的常规文件系统中,我在C:\ ffmpeg
  10. 创建了一个文件夹
  11. 回到Win64 Shell,我转到这个新文件夹:cd /c/ffmpeg
  12. 然后运行/usr/loca/ffmpeg/configure --enable-shared
  13. 然后make -r
  14. 最后make install
  15. 现在,如果我不得不猜测,我的'缺陷'在我调用ffmpeg的'configure'脚本时使用的选项中。我是否需要使用特定选项以便我可以使用此处构建的ffmpeg库并将它们用作Visual Studio中的动态(DLL)库?

    ==========配置我的Visual Studio项目============

    以下是我在Visual Studio中创建一个简单的hello world项目以查看ffmpeg是否正常工作的方法。

    1. 我在Visual Studio 2013中创建了一个新的Visual C ++“空项目”
    2. 然后我按如下方式配置了项目属性:

      一个。在C / C ++ =&gt;一般=&gt;附加包含目录,我把

        

      C:\ msys64 \ USR \本地\ ffmpeg的

      湾在Linker =&gt; General =&gt;其他库目录,我指向每个构建的库文件夹(基本上我指向所有的库,这些库是为了确保我不会无意中错过关键文件夹而构建的)。清单如下:

      • C:\ ffmpeg \ libavcodec
      • C:\ ffmpeg的\ libavdevice
      • C:\ ffmpeg的\ libavfilter
      • C:\ ffmpeg的\了libavformat
      • C:\ ffmpeg的\ libavutil
      • C:\ ffmpeg的\ libswresample
      • C:\ ffmpeg的\ libswscale
      • C:\ ffmpeg的

      ℃。在Linker中=&gt;输入=&gt;额外的依赖关系,我指出了特定的库(再次 - 我指出了所有存在的库)。清单是:

      • avcodec.lib
      • avdevice.lib
      • avfilter.lib
      • avformat.lib
      • avutil.lib
      • swresample.lib
      • swscale.lib
    3. 然后,我创建了一个名为“tut01.c”的新源文件,并复制/粘贴了http://dranger.com/ffmpeg/tutorial01.c

    4. 中的代码
    5. 然后点击F7并得到上面指定的关于未找到avconfig.h的错误
    6. 以上是我最好的猜测,我需要遵循的步骤才能在Windows中运行(顺便说一句,它是Windows 10,64位)&amp; Microsoft Visual Studio 2013.我应该更改以构建和运行此基本程序?

1 个答案:

答案 0 :(得分:0)

@halfelf,感谢您的回复。他们让我再看看我的文件,我发现我指的是包含(和lib)文件的错误位置。事实证明,在构建ffmpeg时,它会放置在横向文件夹/usr/local/include/usr/local/bin中,我猜,分别包含更完整的包含和库文件(包括avconfig.h!)我更新了我的Visual Studio项目属性指向这些文件夹,解决了这个问题。

但随后,我遇到了一个新问题“PIX_FMT_RGB24”未被识别。但是,我认为这与我正在使用的教程文件过时有关。我可以删除那些(和相关的)行,代码将构建和执行(尽管它没有做太多,因为删除了'money'代码行)。但至少ffmpeg的基本功能似乎有效。