1. 程式人生 > >VS2013+FFMPEG開發環境配置

VS2013+FFMPEG開發環境配置

包含三個版本:Static、Shared以及Dev
Static   --- 包含3個應用程式:ffmpeg.exe , ffplay.exe , ffprobe.exe,體積都很大,相關的DLL已經被編譯到exe裡面去了。
Shared --- 除了ffmpeg.exe , ffplay.exe , ffprobe.exe之外還有一些DLL,exe體積很小,在執行時到相應的DLL中呼叫功能。
Dev      --- 開發者(developer)版本,裡面包含了庫檔案xxx.lib以及標頭檔案xxx.h,這個版本不含exe檔案

一般我們用到的是Shared(*.dll)和Dev(*.lib;*.h)。

1、開啟 Visual Studio 2013,新建專案,選擇 Visual C++ 中的 Win32 控制檯應用程式,確定,完成。
2、進入 FFmpeg 原始碼資料夾下的 doc/examples 資料夾,找到 metadata.c 檔案,該檔案是一個獨立 demo,執行結果為列印音視訊媒體檔案基本資訊。開啟將其中的內容複製並貼上到 ffmpeg-test.cpp 中,稍微修改如下。
3、在 Visual Studio 中的專案名上右擊,開啟屬性,分別設定 配置屬性 -> C/C++ -> 附加包含目錄 和 配置屬性 -> 連結器 -> 附加庫目錄 為第二步解壓好的 32-bit Dev 資料夾下的 include 資料夾和 lib 資料夾,同時在 配置屬性 -> 連結器 -> 輸入 -> 附加依賴項 新增 avformat.lib 和 avutil.lib。


4、再將第二步解壓的 32-bit Shared 資料夾下的 bin 資料夾中的 avcodec-56.dll、avformat-56.dll、avutil-54.dll 和 swresample-1.dll 拷貝到與解決方案同名的專案資料夾中。最終的檔案結構如下圖。

在VS2013環境下編譯出現:


這是由於該函式被標記為attribute_deprecated,意味著該函式在不久的將來會被淘汰。

解決:1、將SDL檢查關閉(暫時的方法)

2、更改為新的函式(參考ffplay.c)


5、編譯執行成功得到結果如下。

命令列下編譯:

E:\MyDocument\Desktop\FFmpeg>tree /F
資料夾 PATH 列表
卷序列號為 32D1-7CF3
E:.
│  avcodec-55.dll
│  avcodec.lib
│  avdevice-55.dll
│  avdevice.lib
│  avfilter-4.dll
│  avfilter.lib
│  avformat-55.dll
│  avformat.lib
│  avutil-52.dll
│  avutil.lib
│  ffmpeg.cpp
│  ffmpeg.exe
│  ffmpeg.obj
│  inttypes.h
│  postproc-52.dll
│  postproc.lib
│  stdint.h
│  swresample-0.dll
│  swresample.lib
│  swscale-2.dll
│  swscale.lib
│  _mingw.h

├─libavcodec
│      avcodec.h
│      avfft.h
│      dxva2.h
│      old_codec_ids.h
│      vaapi.h
│      vda.h
│      vdpau.h
│      version.h
│      xvmc.h

├─libavdevice
│      avdevice.h
│      version.h

├─libavfilter
│      asrc_abuffer.h
│      avcodec.h
│      avfilter.h
│      avfiltergraph.h
│      buffersink.h
│      buffersrc.h
│      version.h

├─libavformat
│      avformat.h
│      avio.h
│      version.h

├─libavutil
│      adler32.h
│      aes.h
│      attributes.h
│      audioconvert.h
│      audio_fifo.h
│      avassert.h
│      avconfig.h
│      avstring.h
│      avutil.h
│      base64.h
│      blowfish.h
│      bprint.h
│      bswap.h
│      buffer.h
│      channel_layout.h
│      common.h
│      cpu.h
│      crc.h
│      dict.h
│      downmix_info.h
│      error.h
│      eval.h
│      ffversion.h
│      fifo.h
│      file.h
│      frame.h
│      hmac.h
│      imgutils.h
│      intfloat.h
│      intfloat_readwrite.h
│      intreadwrite.h
│      lfg.h
│      log.h
│      lzo.h
│      macros.h
│      mathematics.h
│      md5.h
│      mem.h
│      murmur3.h
│      old_pix_fmts.h
│      opt.h
│      parseutils.h
│      pixdesc.h
│      pixfmt.h
│      random_seed.h
│      rational.h
│      replaygain.h
│      ripemd.h
│      samplefmt.h
│      sha.h
│      sha512.h
│      stereo3d.h
│      time.h
│      timecode.h
│      timestamp.h
│      version.h
│      xtea.h

├─libpostproc
│      postprocess.h
│      version.h

├─libswresample
│      swresample.h
│      version.h

└─libswscale
        swscale.h
        version.h




E:\MyDocument\Desktop\FFmpeg>