視頻解碼中用到的ffmpeg交叉編譯技巧
軟件大小:未知
發布時間:2022-12-08
刷新次數:
內容詳情
一、簡介FFmpeg是一個集錄制,轉換,音/視頻編碼解碼功能為一體的完整的開源解決方案。FFmpeg的開發是基于Linux操作系統,但是可以在大多數操作系統中編譯和使用。由于ffmpeg是基于linux開發的,源代碼和windows下最常見的visualstudio提供的c/c++編譯器不兼容,因此不能直接使用msvc++編譯,想要使用ffmpeg,需要在windows下配置一個類似Linux的編譯環境,并將ffmpeg編譯為二進制庫以后,再利用其進行進一步開發。目前,windows下可直接使用的最新版本是由ffmpeg工程組,于2008年4月份發布的ffmpegfullsdkv3.2。該sdk盡可能的集成了更多的編解碼器。在應用中,使用該開發包存在2個缺陷,第一,該sdk編譯基于ffmpegr12790,編解碼效率上,當前已經有了較大的提升;第二,該開發包包含了很多不需要的編解碼器,需要盡可能減少開發包的體積及關聯的庫的個數。基于以上需求,需要自己編譯出windows下可用動態庫及靜態庫。使用到的庫文件有4個,libavcodec,libavformat,libavutil,libswscale,其中庫libavcodec,libavformat用于對媒體文件進行處理,如編解碼;libavutil是一個通用的小型函數庫,該庫中實現了CRC校驗碼的產生,128位整數數學,最大公約數,整數開方,整數取對數,內存分配,大端小端格式的轉換等功能,libswscale主要用于圖像格式轉換及縮放。因效率的需要,我們選擇了ffmpeg-mt版本,同時通過配置編譯盡量減少相關文件的體積。網上類似編譯過程說明較多,但實際編譯過程中碰到一些問題,這些問題的解決花費了不少時間,本文檔對這一過程進行記錄,以便后續維護及學習。二、編譯環境搭建windows下ffmpeg編譯環境有多種可選擇方案。這里我們使用MinGW+MSYS。1.下載mingw+msys并安裝http://sourceforge.net/projects/mingw/mingw,默認安裝,在choosecomponents時選擇g++compiler及MinGWMakeMsys,默認安裝,Doyouwishtocontinuewiththepostinstall【yn】,y!Doyouhavemingwinstalled?【yn】,yWhereisyourmingwinstallation?C:/mingw在c:/mingw/1.0/msys.bat的第一行添加E:\ProgramFiles\MicrosoftVisualStudio9.0\VC\bin\vcvars32.bat2.編譯將ffmpeg-mt減壓縮至c:\mysy\1.0\home\Administrator下啟動msys,pwd確認當前路徑cd/home/administrator/ffmpeg-ffmpeg-mt下載gcc-full-4.4.0-mingw32-bin-2.tar.lzma.tar減壓縮覆蓋至c:\mingw,這里需要注意的是,如果gcc版本過低,可能導致解碼報錯!在ffmpeg-ffmpeg-mt創建編譯選項文件compile.sh在該文件中添加./configure--disable-static--enable-shared--enable-memalign-hack--disable-debug--disable-network--disable-mpegaudio-hp--disable-ffserver--disable-ffplay--disable-filters--disable-devices--disable-protocols--disable-demuxers--disable-muxers--disable-encoders--disable-parsers--disable-bsfs--enable-pthreads--enable-runtime-cpudetect--disable-decoders--enable-decoder=H264運行compile.sh,這時會提示:./configure:line248:pr:commandnotfound這個需要從coreutils-5.97中提取pr.exe,拷貝至c:/msys/1.0/bin然后會提示:Error:can’tfindpthreadslibrary這個需要通過下載pthreadsGC2-static-2.9.x-gcc42.tar.bz2(靜態連接),減壓縮至c:\mingw\mingw32中解決從其他版本ffmpeg中提取libswscale至當前文件夾內將sdl-devel-1.2.14-mingw32.tar.gz減壓縮至c:\mingw3.目標文件生成通過上述過程,生成的是動態庫,對應的庫有avcodec.dll/avcodec.lib/avcodec-xx.xx.xx.dll/avcodec-xx.dll/avcodec-xx.lib,另外三個庫文件生成類似,選擇所需對應dll及lib即可直接用于使用。對于靜態庫的編譯,僅需修改編譯配置,將--disable-static--enable-shared更改為--enable-static--disable–shared即可。生成靜態庫文件libavcodec.a/libavformat.a/libavutil.a/libswscale.a,用于windows下vc項目時,還需注意添加相關庫文件:libgcc.alibmingwex.alibpthreadGC2.aWs2_32.lib。三、編譯選項及注意項1.gcc版本,gcc版本過低可能導致運行錯誤2.Pthread庫,最好使用最新版靜態庫,版本過低會有編譯錯誤3.碰到問題,可以通過google搜索相關錯誤說明,這個過程需要有足夠的耐心。
獲取資料
★下載時請注意網站提示!如未成功下載勿關閉頁面并聯系網站客服。
重要說明
1.瀏覽本站前務必閱讀并知曉本站服務條款點擊閱讀
2.嚴禁將本站分享內容用于非法用途,或以任何形式的傳播,造成損失由使用人承擔一切后果.
3.本站網友等分享的一些資源僅供無商業目的得交流學習之用,版權規所有權人所有.
------分隔線----------------------------