在Windows下編譯ffmpeg完全手冊

2022-07-18 15:48:16 字數 2277 閱讀 3001

本文的內容幾乎全部來自於ffmpeg on windows

本文的目的是提供一切與ffmpeg在windows下的相關幫助。它最初是乙個針對用msys+mingw系統編譯的手把手的教程,現在也增加了如何在你的專案中鏈結ffmpeg所產生的庫(c++,c#)。   

我們不討論cygwin,因為它的工作方式基本上與unix系統相一致。 開始之前,首先要明確以下幾點:

介紹本指南是十分冗長的。如果你已經以前曾有過編譯開源軟體

的經驗,你可以嘗試讀一下這篇

。它要簡短的多,只需要一些小的微調就能正常工作。

但是如果你遇到了任何問題,在你向ffmpeg的郵件列表報告錯誤時請先仔細的通讀本文,它是非常直觀的,不少地方的細節甚至可能過於詳細了。我們試圖涵蓋一切可能出錯的地方,如果你精確的遵照文中的方法,你不會在windows環境下的ffmpeg上有任何問題。盡你的努力去解決你所遇到的問題,絕大多數的ffmpeg開發人員不使用windows,所以他們幫不了你什麼。

預備這裡的內容可能和本文沒有什麼關係,但是我不想留下任何可能出錯的地方。對於絕大多數人來說,這一部分可以跳過。 你需要乙個解壓的工具軟體支援「*.tar.gz」和「*.tar.bz2」檔案。你將需要把這些壓縮

包解壓縮到指定的目錄下。如果你已經有這樣的程式了,並且知道如何解壓到特定目錄下,請閱讀準備msys+mingw系統

。 這裡我將演示如何使用7-zip或winrar來解壓縮。推薦使用7-zip,因為它是開源且免費的。

準備msys+mingw系統獲取最新的msys+mingw系統。注意以下幾個包的版本要求:

如果你已經安裝配置完畢,那麼請閱讀下一部分用svn方式獲取ffmpeg

,否則的話請依次執行下面的步驟。

用svn方式獲取ffmpeg如果你已經知道如何獲取ffmpeg的源**

,那麼請閱讀下一部分編譯

。 由於ffmpeg的源**存放在svn倉庫裡,你必須使用命令列程式或是圖形介面程式來訪問。我個人推薦tortoisesvn,因為它和windows資源管理器結合的非常棒,所以我只介紹使用tortoisesvn

的方法。 編譯

鏈結編譯ffplay你必須事先安裝了sdl-devel

sdl.dll必須在ffplay

.exe德path路徑中,程式才能啟動。在msys環境下mingw/bin在path環境變數中,因此執行ffplay.exe不會有問題。但如果你想在msys外部執行,則應sdl.dll複製到和ffplay.exe同乙個目錄下。

複製**

現在你可以按照前面的方式靜態或動態重新編譯ffmpeg,在執行configure指令碼後,它將正確的找到sdl和ffplay。

對第三方庫的支援

你必須完全的理解了編譯動態庫

部分。在向ffmpeg的二進位制檔案中新增其他的庫時,你必須首先考慮庫是以靜態還是動態的鏈結到ffmpeg中。不要把這個和ffmpeg本身是靜態/

動態鏈結庫搞混,你可以把靜態的將第三方庫鏈結到ffmpeg中,但是ffmpeg的庫本身是動態載入的dll庫。

考慮這種情況:你想要更換xvidcore卻不希望重新編譯ffmpeg,那你就應該把xvidcore編譯成動態鏈結庫。

其次你要考慮的是這些第三方庫被安裝到msys系統中的什麼位置上。

對於絕大多數的是庫,如果你把它們安裝到預設路徑,你就得向ffmpeg的configure指令碼傳遞額外的引數,這樣才能在編譯的時候找到這些庫。

如果你把這些庫安裝到gcc的預設includelib路徑下,就不需要額外指定這些引數了。如果你希望把動態庫和靜態庫分開儲存,那就不得不指定路徑。這樣的路徑被稱為你所安裝的庫的prefix。 如果你把庫安裝在了非gcc的預設尋找路徑,你必須向ffmpeg的configure指令碼傳遞這些路徑資訊。

--extra-ldflags=-l/lib --extra-cflags=-i/include

複製**

類似這樣:

./configure --enable-memalign-hack --enable-***lame  -–extra-ldflags=-l/usr/local/lib  --extra-cflags=-i/usr/local/include

複製**

在msys下gcc的預設路徑是 /mingw另外,如果你把這些庫的dll安裝後,確保你的應用程式能在path環境變數中找到相應的dll。 我將展示下面這些庫的安裝:

引用原文:

在Ubuntu Server上編譯FFmpeg

ffmpeg官方給出了詳細的編譯步驟 本文和官方指南相比,主要在於改進了以下幾處 編譯的bin目錄不放到某個使用者目錄下,而是放到 opt bin下面 以下測試在ubuntu server 14.04下通過。首先,用apt get update和apt get upgrade把系統公升級到最新版,然...

在Windows下編譯OpenSSL

如何在windows下編譯openssl vs2005使用vc8的cl編譯器 1 安裝activeperl 初始化的時候,需要用到perl直譯器 2 使用vs2005下的visual studio 2005 command prompt進入控制台模式 這個模式會自動設定各種環境變數 3 解壓縮ope...

在Windows下編譯FreeCAD

之前也研究過如何在windows下搭建起乙個cad系統,模仿當前工作中做的那個軟體,但牽扯到的都是些mfc,vba,com啥的。雖然我一直覺得那些抹黑微軟技術,鼓吹mac和linux的行為很矯情,在這點上我還是寧願俗氣點 不能跨平台,總感覺心裡缺了點啥的 一般情況下,你configure會失敗,比如...