日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

FFmpeg在Windows系统下的编译过程

發布時間:2023/12/18 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FFmpeg在Windows系统下的编译过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于FFMpeg是基于Linux開發的開源項目,源代碼和Windows下最常見的Visual Studio提供的C/C++編譯器不兼容,因此它不能使用MSVC++編譯。要想使用FFMpeg,最先要解決的問題就是在Windows下配置一個類似Linux的編譯環境,將FFMpeg編譯為二進制庫以后,再利用其進行進一步開發。
  MSVC++并不嚴格的遵循C標準,所以整個編譯過程必須使用MSys+MinGW系統來完成。如果選擇編譯動態鏈接庫(dll),這些庫將和其他的動態鏈接庫一樣在使用上沒什么差別,可以使用MSVC++來鏈接這些庫到自己的程序,只有這種情況下MSVC++是被支持的。
  FFmpeg在Windows系統下的編譯過程如下:


準備MSys+MinGW系統?
  1)安裝MSys
  到http://sourceforge.net/project/showfiles.php?group_id=2435下載文件:
  bash-3.1-MSYS-1.0.11-snapshot.tar.bz2
  msysCORE-1.0.11-2007.01.19-1.tar.bz2
  (可能會有版本變化,以下同)
  解壓msysCORE-1.0.11-2007.01.19-1.tar.bz2,比如解壓到D:/msys(以下內容都使用該路徑描述)。
  解壓bash-3.1-MSYS-1.0.11-snapshot.tar.bz2,產生一個名為bash-3.1的目錄,在該目錄下有一個子目錄名為bin,其他的目錄不需要關心。復制bin目錄中的所有文件到D:/msys/bin,提示是否要覆蓋sh.exe的時候,選擇是。
  到“D:/msys/postinstall”目錄下執行pi.bat,在出現的提示中輸入n回車后,按任意鍵退出即可。
  2)安裝MinGW
  同樣是到http://sourceforge.net/project/showfiles.php?group_id=2435下載文件:
  binutils-2.17.50-20060824-1.tar.gz
  gcc-core-3.4.5-20060117-1.tar.gz
  gcc-g++-3.4.5-20060117-1.tar.gz
  w32api-3.9.tar.gz
  mingw-runtime-3.12.tar.gz
  把它們全部解壓到D:/msys/mingw。
  3)修改“msys.bat”
  用文本編輯器打開D:/msys/msys.bat,由于打算用MSVC++編譯程序,所以需要有.lib文件才能鏈接到FFmpeg的庫,這些.lib文件可以使用微軟的工具鏈中lib命令產生。為此,機器上必須已經安裝了微軟的Visual Studio或是Visual C++。把下面一行加到msys.bat的最前面,把路徑替換成機器上vcvars32.bat實際存在的路徑,比如我的在“D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin”,于是就添加:
  call "D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/vcvars32.bat"
  4)系統整合
  復制D:/msys/etc/fstab.sample為D:/msys/etc/fstab,用文本編輯器打開D:/msys/etc/fstab編輯。(需要使用一個支持Unix換行風格的編輯器,比如Notepad++),把下面這行:
  d:/mingw /mingw
  改為:
  d:/msys/mingw /mingw
  完成以上步驟,MSys+MinGW系統就配置完成了。

用SVN方式獲取FFmpeg?
  由于FFmpeg的源代碼存放在SVN倉庫里,所以必須使用命令行程序或是圖形界面程序來訪問。為了方便,我使用TortoiseSVN這個圖形界面程序,因為它和Windows資源管理器結合的非常好。
  首先到http://sourceforge.net/project/showfiles.php?group_id=138498下載TortoiseSVN并安裝,安裝結束后需要重新啟動才可以使用。如果希望使用中文版本,可以下載LanguagePack-version-win32-zh_CN.exe,這樣軟件就變成熟悉的中文界面了。
  由于TortoiseSVN完全整合到了Windows資源管理器中,所以我們只要開啟資源管理器,在希望存放代碼的目錄上右擊選擇“SVN檢出...”就可以啟動TortoiseSVN。我把FFmpeg源代碼存儲在“D:/ffmpeg”目錄下,所以右擊該目錄,選擇“SVN檢出...” ,然后在出現的對話框中填寫如下內容:


圖1

  點擊確定就會開始下載過程,TortoiseSVN會把最新版本的FFmpeg源代碼下載到本地目錄中,等待下載結束,就可以開始編譯過程。
  由于FFmpeg的維護人員較多,下載的版本難免會有錯誤,甚至于當前下載的版本根本就無法編譯,所以要經常更新。更新的方法很簡單,右擊FFmpeg所在的目錄,選擇“SVN更新”即可。

編譯?
  首先通過MSys安裝目錄下的msys.bat啟動MSys,這時會出現一個命令行窗口,它是一個運行著bash的rxvt程序,如下圖:


圖2

  這是一個類似Linux的shell并且在Windows上運行,就像是在使用一個真正的Linux shell。不過使用這個shell時需要注意:
  →目錄名使用正斜杠來分割,而不是Windows所使用的反斜杠(比如說要寫成"D:/ffmpeg"而不是"D:/ffmpeg")。
  →盤符(例如"C:/")可以從根目錄處訪問(像這樣"/C/")。
  →文件名或目錄名中如果帶有空格,必須用雙引號括起(例如這樣"/C/Program Files",帶有雙引號)。
  下面切換到存放FFmpeg源代碼的目錄,方法是輸入:"cd /D/ffmpeg"。
  接下來要配置FFmpeg,選擇編譯時包含的庫,對于如何加入對第三方庫的支持,請看后續描述,這里先輸入:
  ./configure --enable-memalign-hack
  --enable-memalign-hack選項是FFmpeg在Windows上編譯成功所必須指定的,待配置完成后,將回到命令提示符,看到下圖所示的畫面:


圖3

  如果沒有錯誤的話,就可以"make"具有基本功能的FFmpeg了,在提示符后輸入:"make"。
  編譯的過程將持續很長時間。如果一切正常,結束后將返回提示符,并有如下的輸出畫面:


圖4

  這時程序已經編譯好了,在存放FFmpeg源代碼的目錄下可以找到ffmpeg.exe這個文件。
  之后,如果希望把FFmpeg安裝到系統中,可以執行安裝步驟:"make install",這將會復制所有生成的重要文件到MSys的local文件夾下。
  由于我只是調用FFmpeg,所以沒有安裝,而是把ffmpeg.exe復制到需要的目錄下,作為一個模塊使用。
  如果希望使用FFmpeg包含的libavcodec庫開發多媒體文件處理程序,還需要編譯libavcodec的dll動態鏈接庫,編譯過程和上述過程稍有差別,如下所述:
  首先切換到FFmpeg的源代碼目錄,在開始編譯前先使用"make distclean"清理上一次留下的中間文件,然后向configure腳本多傳遞兩個參數:
  ./configure --enable-shared --disable-static --enable-memalign-hack
  最后執行"make"命令就可以了。
  這種編譯方式能夠得到供MSVC++使用的文件,從而使用MSVC++進行進一步開發。

鏈接?
  在FFmpeg目錄下有三個子目錄名字分別為:libavutil、libavcodec和libavformat,如果在前述步驟中成功生成了動態鏈接庫,那么在這三個目錄下都有一個SLIBNAME_WITH_MAJOR.lib這樣的文件,例如我生成的是avcodec-51.lib、avformat-51.lib 和 avutil-49.lib,MSVC++可以從這些文件中知道dll的導出函數。
  現在通過包含FFmpeg的頭文件,和使用上述三個lib文件進行鏈接,就能夠編寫具備FFmpeg功能的應用程序了。

加入對第三方庫的支持?
  我以加入對mp3lame的支持為例,說明加入第三方庫的方法。
  首先需要下載mp3lame,這里有兩個方案可以選擇:
  →到http://sourceforge.net/project/showfiles.php?group_id=290下載lame-3.97.tar.gz,使用以下命令編譯并安裝到MinGW的庫中:
  ./configure --prefix=/static --disable-shared --enable-static
  make
  make install
  或者將mp3lame編譯為動態鏈接庫:
  ./configure --prefix=/shared
  make
  make install
  →到http://oss.netfarm.it/mplayer-win32.php下載已經編譯的mp3lame庫,解壓后復制到“D:/msys/mingw”文件夾下。
  接下來和前述步驟類似,切換到存放FFmpeg源代碼的目錄,在傳遞配置參數時要加入“--enable-libmp3lame” ,即使用以下命令配置:
  ./configure --enable-static --enable-shared --enable-memalign-hack --enable-libmp3lame
  配置后顯示的信息如下圖:


圖5

  可以看到這時libmp3lame已經為enabled,下面只要使用"make"命令編譯就可以了。
  最終我的FFmpeg配置為:
--enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-liba52 --enable-avisynth --enable-libdts --enable-libfaac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libogg --enable-libtheora --enable-libvorbis --enable-x264 --enable-xvid --enable-amr_nb --enable-amr_wb --cpu=i686 --enable-memalign-hack --extra-ldflags=-static
===============華麗的分隔線=========
本文參考了http://www.aurora-x.net/wiki/CompileFFmpegWindows和FFmpeg工程組的有關內容,并針對已經過時的部分稍加修改,感謝網絡上無私奉獻的朋友們。星塵☆回憶tag:blogger.com,1999:blog-399668078016494547.post-35850969380399542382007-05-21T22:08:00.000+08:002007-05-21T23:33:28.932+08:00為了寫畢業論文,我不得不把繁瑣至極的FFmpeg編譯過程又重復了一遍。累啊!

?

另外一篇文章:

1、下載
SVN 客戶端 TortoiseSVN
http://nchc.dl.sourceforge.net/sourceforge/tortoisesvn/TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi

MinGW + MSYS
http://sourceforge.net/project/showfiles.php?group_id=2435
MinGW-5.1.3.exe (安裝時,根據選項會自動下載相關編譯器等)
MSYS-1.0.11-20071204.tar.bz2 (解壓bin里面的文件,覆蓋到安裝好的MSYS相應目錄)
bash-3.1-MSYS-1.0.11-1.tar.bz2 (解壓bin里面的文件,覆蓋到安裝好的MSYS相應目錄)
coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2 (需要bin里面的pr.exe,拷貝到MSYS相應目錄,configure時候會用到這個工具)

http://gd.tuwien.ac.at/gnu/mingw/?fisel=0-9,a-z,A-Z
MSYS-1.0.11-2004.04.30-1.exe (MSYS安裝程序)

2、安裝
安裝 MinGW-5.1.3.exe
安裝 MSYS-1.0.11-2004.04.30-1.exe
配置 MSYS 的 etc 下的 fstab,指定 MinGW 的位置

3、獲取 FFmpeg 源碼
用 TortoiseSVN 將 FFmpeg 源碼 checkout 到本地
svn://svn.mplayerhq.hu/ffmpeg/trunk

4、編譯
./configure ....................................(各種參數)
make
make install


總結

以上是生活随笔為你收集整理的FFmpeg在Windows系统下的编译过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。