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> |