FFmpeg 編譯安裝和靜態安裝

FFmpeg 編譯安裝和靜態安裝

簡介

FFmpeg 是一個領先的多媒體框架,能夠解碼、編碼、轉碼、復用、解復用、流化、過濾和播放幾乎所有人類和機器創建的格式。本指南將詳細介紹如何在 CentOS 8.5.2111 系統上從源代碼編譯并安裝 FFmpeg 6.1.1 版本。從源代碼編譯安裝可以確保您獲得最新版本的功能,并可以根據您的特定需求進行定制。本博客主要依賴于 manus 生成,我通過 manus 給出的方案逐步運行并安裝成功,并且我也對比了下預編譯靜態安裝和編譯安裝的差別。

1. 預編譯靜態安裝(新手推薦)

預編譯靜態安裝是普通用戶的首選,速度快操作少,只需要按照自己機器的型號和需要安裝的版本進行選擇,1分鐘即裝即用,但是缺點是有些動態庫不支持,速度慢等等,但是我不是CV方向的深度用戶,所以我沒有卡到靜態安裝造成的瓶頸上

首先,我們要去官方預編譯庫中選擇自己需要的版本,https://github.com/BtbN/FFmpeg-Builds/releases

其次,依次執行下面的命令就可以成功安裝了,耗時取決于你的網速

wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-6.1.1-amd64-static.tar.xztar xf ffmpeg-6.1.1-amd64-static.tar.xzcd ffmpeg-n6.1-latest-linux64-gpl-6.1/bin# 或者你可以選擇添加路徑的方式
sudo install -m 755 ffmpeg ffprobe /usr/local/binffmpeg -version

2. 編譯安裝

編譯安裝版本選擇更多,功能選擇更多,對依賴包的使用更加極致,但是缺點就是安裝的慢且復雜。不同的機器在編譯配置的時候所需要的依賴包不同,我這里也是基于 manus 給出的建議進行羅列的,但在配置 ffmpeg configure 的時候一定不能報錯,哪個包缺少或者版本依賴不對都要修改,否則在 make 編譯的時候是通不過的

1. 更新系統

首先,更新您的系統,確保所有已安裝的軟件包都是最新版本。這有助于避免潛在的依賴問題。

sudo dnf update -y

2. 安裝開發工具

安裝編譯 FFmpeg 所需的開發工具和庫。Development Tools 組包含了 GCC、make 等基本編譯工具。

sudo dnf groupinstall "Development Tools" -y
sudo dnf install epel-release -y
sudo dnf install git nasm yasm autoconf automake cmake libtool -y

3. 安裝必要的依賴庫

FFmpeg 依賴于許多第三方庫來支持不同的音視頻格式和功能。以下是一些常用的、推薦安裝的庫。您可以根據需要選擇性安裝。

重要提示: CentOS 8 已經停止維護,其官方倉庫可能不再更新。您可能需要啟用 PowerTools 或 CodeReady Linux Builder (CRB) 倉庫來獲取一些依賴。

啟用 PowerTools 倉庫 (如果尚未啟用):

sudo dnf config-manager --set-enabled PowerTools

或者,對于某些較新的 CentOS 8 版本,可能需要啟用 CodeReady Linux Builder (CRB) 倉庫:

sudo dnf config-manager --set-enabled codeready-builder

安裝依賴庫:

sudo dnf install \ SDL2-devel \ zlib-devel \ bzip2-devel \ libXext-devel \ libXfixes-devel \ libXrandr-devel \ libXrender-devel \ libXv-devel \ libva-devel \ libvdpau-devel \ alsa-lib-devel \ pulseaudio-libs-devel \ libwebp-devel \ openjpeg2-devel \ lame-devel \ libvorbis-devel \ libtheora-devel \ libvpx-devel \ x264-devel \ x265-devel \ opus-devel \ v4l-utils-devel \ frei0r-devel \ libass-devel \ libbluray-devel \ libbs2b-devel \ libcaca-devel \ libcdio-paranoia-devel \ libdrm-devel \ libiec61883-devel \ libmodplug-devel \ libopenmpt-devel \ librtmp-devel \ libssh-devel \ libv4l-devel \ libxml2-devel \ openal-soft-devel \ openssl-devel \ speex-devel \ teem-devel \ twolame-devel \ vid.stab-devel \ vo-amrwbenc-devel \ wavpack-devel \ yasm-devel \ zimg-devel \ -y

請注意,上述列表包含了很多可選的庫。如果您不需要所有功能,可以只安裝您需要的庫。例如,如果您不需要 H.264 編碼,可以不安裝 x264-devel

編譯和安裝 FFmpeg 6.1.1

1. 下載 FFmpeg 源代碼

從 FFmpeg 官方網站下載 6.1.1 版本的源代碼。您可以使用 wget 命令下載。

cd /usr/local/src
sudo wget https://ffmpeg.org/releases/ffmpeg-6.1.1.tar.bz2
sudo tar -xf ffmpeg-6.1.1.tar.bz2
cd ffmpeg-6.1.1

2. 配置編譯選項

進入 FFmpeg 源代碼目錄后,運行 ./configure 命令來配置編譯選項。您可以根據需要啟用或禁用特定的組件和編解碼器。以下是一個常用的配置示例,包含了許多常用功能。

sudo ./configure \ --prefix=/usr/local/ffmpeg \ --enable-shared \ --enable-gpl \ --enable-nonfree \ --enable-libmp3lame \ --enable-libopus \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-libwebp \ --enable-libtheora \ --enable-libvorbis \ --enable-libass \ --enable-libfreetype \ --enable-libfribidi \ --enable-libharfbuzz \ --enable-libfontconfig \ --enable-libspeex \ --enable-libv4l2 \ --enable-libxvid \ --enable-opencl \ --enable-opengl \ --enable-pthreads \ --enable-version3 \ --enable-hardcoded-tables \ --enable-avfilter \ --enable-postproc \ --enable-runtime-cpudetect \ --disable-debug \ --disable-static

配置選項說明

  • --prefix=/usr/local/ffmpeg: 指定 FFmpeg 的安裝路徑。建議安裝到 /usr/local/ 下的獨立目錄,以便于管理。
  • --enable-shared: 編譯共享庫,這對于其他程序調用 FFmpeg 庫非常有用。
  • --enable-gpl: 啟用 GPL 許可下的組件。如果您計劃分發您的應用程序,請注意 GPL 許可的限制。
  • --enable-nonfree: 啟用非自由許可下的組件,例如 x264x265。同樣,請注意許可限制。
  • --enable-libmp3lame, --enable-libopus, --enable-libvpx, --enable-libx264, --enable-libx265, --enable-libwebp, --enable-libtheora, --enable-libvorbis, --enable-libass, --enable-libfreetype, --enable-libfribidi, --enable-libharfbuzz, --enable-libfontconfig, --enable-libspeex, --enable-libv4l2, --enable-libxvid: 啟用對特定外部庫的支持。只有安裝了相應的 *-devel 包,這些選項才能成功啟用。
  • --disable-debug: 禁用調試信息,可以減小編譯后的文件大小。
  • --disable-static: 禁用靜態庫編譯,只編譯共享庫。

如果 configure 命令執行成功,它會顯示一個總結,列出將要編譯的組件和啟用的功能。如果出現錯誤,通常是缺少某個依賴庫,您需要根據錯誤信息安裝相應的 *-devel 包。

3. 編譯和安裝

配置完成后,使用 make 命令編譯 FFmpeg,然后使用 make install 進行安裝。

sudo make -j$(nproc)
sudo make install

make -j$(nproc) 會利用所有可用的 CPU 核心進行并行編譯,從而加快編譯速度。

配置環境變量

為了讓系統能夠找到 FFmpeg 命令和庫,需要配置環境變量。

1. 配置動態鏈接庫路徑

創建或編輯 /etc/ld.so.conf.d/ffmpeg.conf 文件,添加 FFmpeg 庫的路徑。

sudo echo "/usr/local/ffmpeg/lib" | sudo tee /etc/ld.so.conf.d/ffmpeg.conf
sudo ldconfig

ldconfig 命令會更新動態鏈接庫緩存。

2. 配置 PATH 環境變量

將 FFmpeg 的可執行文件路徑添加到系統的 PATH 環境變量中,這樣您就可以在任何位置直接運行 ffmpeg 命令。

sudo echo 'export PATH="/usr/local/ffmpeg/bin:$PATH"' | sudo tee /etc/profile.d/ffmpeg.sh
source /etc/profile.d/ffmpeg.sh

為了使 PATH 環境變量永久生效,您可能需要重新登錄或重啟終端會話。

驗證安裝

安裝完成后,驗證 FFmpeg 是否已成功安裝并可正常使用。

ffmpeg -version

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92781.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92781.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92781.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人大BABEC地平線高效率具身導航!Aux-Think:探索視覺語言導航中數據高效的推理策略

作者: Shuo Wang1,3^{1,3}1,3, Yongcai Wang1^{1}1, Wanting Li1^{1}1 , Xudong Cai1^{1}1, Yucheng Wang3^{3}3, Maiyue Chen3^{3}3, Kaihui Wang3^{3}3, Zhizhong Su3^{3}3, Deying Li1^{1}1, Zhaoxin Fan2^{2}2單位:1^{1}1中國人民大學,2^…

01. maven的下載與配置

1.maven的下載與初步配置a.下載并配置倉庫地址下載maven壓縮包,并解壓,解壓后應有如下幾個文件點擊conf,打開settings.xml(我用的VScode打開的),我們需要聲明一下內部倉庫的地址,以及私服的一些…

1701. 請輸出所有的3位對稱數

問題描述請輸出所有的 33 位對稱數,對稱數指的是一個整數 nn 正過來和倒過來是一樣的,比如:101、121、282…101、121、282…請從小到大輸出符合條件的3位對稱數,每行 11 個。輸入無。輸出從小到大按題意輸出符合條件的數&#xff…

C++算法·排序

排序的定義 這個不用說吧 就是根據某個條件對一個數列進行有序的操作 例如要求從小到大排序、從大到小排序等等 排序的分類 比較排序(Comparison(Comparison(Comparison Sorts)Sorts)Sorts) 特點:通過元素間的比較決定順序 時間復雜度下限:O(nO(nO(n…

微服務項目中的注冊中心——Nacos配置

從零開始:Nacos服務注冊與配置中心實戰教程 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴開源的服務發現、配置管理工具,集注冊中心與配置中心于一體,廣泛應用于微服務架構。本文將從環境搭建到實戰配…

日期格式化成英文月,必須指定語言環境

如果不指定Locale.ENGLISH 在有些JDK下 輸出6月 INV USD 314,791.77,DUE 25-07 [PAID USD 503,389.56 ON 2025-07-16]Mar INV USD 52,042.00,DUE 25-07 [PAID USD 52,042.00 ON 2025-08-11]所以必…

【6】Transformers快速入門:Transformer 的注意力層 是啥?

一句話看懂注意力層作用:讓 AI 像人一樣 “抓重點” (比如讀“貓追老鼠”,自動聚焦 “追” 這個動作,忽略無關詞)1. 為什么需要注意力? 問題場景(翻譯例子): 英文&#x…

集合,完整擴展

目錄 前言: 一、List接口 1.1 ArrayList 1.2 LinkedList 1.3 Vector 二、Set接口 2.1 HashSet 2.2 TreeSet 2.3 LinkedHashSet 三、應用選擇 前言: 本篇文章重點梳理 List 接口和 Set 接口的核心內容,結合代碼案例幫大家吃透它們的…

【doris基礎與進階】3-Doris安裝與部署

安裝前的準備 在windows系統上通過vmwareubuntu 22.04的方式進行安裝,由于資源有限,在同1臺機器上同時安裝fe和be(broker本次不安裝,極簡化安裝),安裝版本為2.1.10,2.x版本架構不會有大的變化&a…

關于數據結構6-哈希表和5種排序算法

哈希表1哈希算法將數據通過哈希算法映射成一個鍵值,存取都在同一個位置實現數據的高效存儲和查找,將時間復雜度盡可能降低至O(1)2哈希碰撞多個數據通過哈希算法得到的鍵值相同,成為產生哈希碰撞3哈希表:構建哈希表存放0-100之間的…

AWT與Swing深度對比:架構差異、遷移實戰與性能優化

全面對比分析Java AWT與Swing GUI框架的架構差異、性能表現和適用場景,提供完整的AWT到Swing遷移實戰指南,包含15代碼示例、性能測試數據、最佳實踐建議,助你做出明智的技術選型和實現平滑遷移。 Java AWT, Swing, GUI框架對比, 代碼遷移, 性…

git倉庫檢測工具

介紹 Gitleaks 是一款用于檢測git 倉庫、文件以及任何你想通過 git 傳遞的信息(例如密碼、API 密鑰和令牌)的工具stdin。如果你想了解更多關于檢測引擎工作原理的信息,請查看這篇博客:正則表達式(幾乎)就是你所需要的一切。 ? ~/code(master) gitleaks git -v○│╲│…

【4】Transformers快速入門:自然語言模型 vs 統計語言模型

一句話關系總結 統計語言模型 自然語言模型的“數學基礎” (就像加減乘除是數學的基礎,統計模型是AI學說話的基礎工具)區別對比表(小白版)維度統計語言模型自然語言模型本質用數學公式算句子概率用神經網絡模仿人腦理…

[激光原理與應用-252]:理論 - 幾何光學 - 傳統透鏡焦距固定,但近年出現的可變形透鏡(如液態透鏡、彈性膜透鏡)可通過改變自身形狀動態調整焦距。

一、液態透鏡:電潤濕效應驅動曲率變化基本結構液態透鏡由兩種互不相溶的液體(如導電水溶液與絕緣硅油)封裝在透明圓筒形容器中構成。容器壁經疏水處理,使水溶液呈圓頂型聚集在中心,與硅油形成凸狀曲面。工作原理電潤濕…

wordpress數據庫導入時的#1044錯誤

在wordpress網站數據庫文件.sql導入到數據庫時,發生錯誤,錯誤提示如下:#1044 – Access denied for user ‘wodepress_com’’localhost’ to database ‘wodepress’。 這個錯誤表明用戶wodepress_com沒有權限訪問數據庫wodepress。以下是解…

微服務ETCD服務注冊和發現

1.什么是注冊中心 注冊中心主要有三種角色: 服務提供者(RPC Server):在啟動時,向 Registry 注冊自身服務,并向 Registry 定期發送心跳匯報存活狀態。 服務消費者(RPC Client)&…

計算機網絡---默認網關(Default Gateway)

一、默認網關的定義 默認網關(Default Gateway)是一個網絡設備(通常是路由器、防火墻或三層交換機)的IP地址,它是本地網絡中的設備訪問其他網絡(如外網、其他子網)時,數據報文的“第…

OpenBMC中libgpio架構與驅動交互全解析:從硬件映射到應用控制

1. libgpio概述與核心定位 libgpio作為OpenBMC中GPIO管理的核心庫,扮演著連接硬件驅動與上層應用的橋梁角色。它通過標準化的接口抽象了不同硬件平臺的GPIO操作細節,使得電源控制、傳感器監控等關鍵功能能夠以統一的方式訪問GPIO資源。 1.1 libgpio在Ope…

開放原子開源生態大會:麒麟信安加入openEuler社區AI聯合工作組,聚焦操作系統開源實踐與行業賦能

7月23日,由開放原子開源基金會主辦的2025開放原子開源生態大會在京開幕,大會以“開源賦能產業,生態共筑未來”為主題。工業和信息化部副部長熊繼軍、北京市人民政府副秘書長許心超出席大會并致辭。作為開放原子開源基金會黃金捐贈人和開源重要…

Lyapunov與SAC算法的數學結構對比:從二次漂移到TD損失

一、李雅普諾夫優化中二次漂移函數的推導 李雅普諾夫優化的核心是通過設計 “李雅普諾夫函數” 和 “漂移項”,保證系統狀態收斂到穩定點。以下以線性時不變系統為例(非線性系統推導邏輯類似,僅動力學方程更復雜),推導…