ffmpeg基礎與編譯_在VS2008下調試output_example.c(詳細步驟)
注意:這個是編譯Debug版本的。
必要資源:FFMPEG SDK 3.2(已經編譯好的,可以去http://www.bairuitech.com/html/ruanjianxiazai/ffmpeg/20080414/89.html下載)
1.建立一個空的VC++工程
建立好之后,將FFMPEG SDK 3.2下的output_example.c文件拷貝至路徑“%Project Dir%/%Project Name%/”下
其“%Project Dir%”為你所建立的工程的路徑,“%Project Name%”為工程名。我的工程路徑為“D:/ARM DEV/FFMPEG/VS FFMPEG/example”
工程名為example,因此我就要將output_example.c拷貝至路徑“D:/ARM DEV/FFMPEG/VS FFMPEG/example/example”下。
2.拷貝頭文件
將FFMPEG SDK 3.2下的include文件夾下的所有文件及文件夾拷貝至output_example.c同一個目錄下。
3.為工程導入output_example.c以及頭文件
A:在解決方案視圖里右鍵單擊“Source Files”->Add->Exsiting Item 然后選擇工程路徑下的output_example.c文件。
B:在解決方案視圖里右鍵單擊“Header Files”->Add->Exsiting Item 然后選擇工程路徑下的前面拷貝過去的所有的頭文件。
4.修改頭文件
修改你所引用到的頭文件。因為output_example.c里只引用了2個頭文件avformat.h,swscale.h
所以分別在這兩個頭文件中加入如下代碼:
#ifdef __cplusplus
extern "C" {
#endif
/*.你要引用的頭文件的內容..*/
#ifdef __cplusplus
}
#endif
前半部分放在頭文件的最開頭,后半部分放在頭文件的最末尾。這樣就可以引用正常使用ffmpeg提供的函數了。
5.拷貝lib文件
將FFMPEG SDK 3.2下的lib文件夾拷貝至output_example.c同一個目錄下。
6.為項目添加所需要的lib文件
A:在Project->Properties->Linker->General->Additional Library Directories下輸入“$(SolutionDir)/$(ProjectName)/lib”,然后點OK。
B:在Project->Properties->Linker->Input->Additional Dependencies下輸入“avcodec.lib avdevice.lib avfilter.lib avformat.lib avutil.lib swscale.lib”,然后點OK。
7.修改output_example.c文件
將output_example.c里的“#include "avformat.h"”和“#include "swscale.h"”
修改為“#include "libavformat/avformat.h"”和“#include "libswscale/swscale.h"”。
8.修改編譯輸出路徑
在Project->Properties->Linker->General->Output Directory下輸入“$(SolutionDir)/$(ProjectName)/$(ConfigurationName)”,然后點OK。
好了,開始編譯。會發現找不到stdint.h這個文件,于是將出現問題的頭文件中的“include <stdint.h>”改為“include "stdint.h"”,繼續編譯,直到所有頭文件中的“include <stdint.h>”都改為“include "stdint.h"”為止。
好了,到這一步編譯已經沒有問題了,可是運行的時候會出現找不到avformat.dll等信息。要想能運行必須為工程添加相應的dll文件。
9.添加dll文件
將FFMPEG SDK 3.2下的bin文件夾下的所有文件拷貝至工程文件夾下的Debug文件夾下,這個時候就可以運行output_example.exe了。
可能還有別的辦法,比如可能很多頭文件是不用的,但是我這里全部都添加進來了,原因是我是新手...只要能調通就萬事大吉了,呵呵
希望這個帖子能幫助到一些跟我一樣的菜鳥朋友么,大家加油,哈哈。
轉載于
http://bbs.chinavideo.org/viewthread.php?tid=3960&extra=page%3D1%26amp%3Bfilter%3Ddigest
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成