1.1 Linux 編譯FFmpeg 4.4.1

一、安裝編譯工具

sudo apt install -y autoconf automake build-essential cmake git pkg-config nasm yasm libtool zlib1g-dev

說明:

  • autoconf:生成 configure 腳本,用于自動配置源碼。
  • automake:與 autoconf 配合,生成 Makefile。
  • build-essential:包括 gcc、g++、make 等基本編譯工具。
  • cmake:x265 等依賴庫需要 CMake 來生成構建文件。
  • git:用于從 Git 倉庫(如 x264、fdk-aac)克隆源碼。
  • pkg-config:用于查找已安裝庫的頭文件和庫路徑。
  • nasm yasm:匯編優化工具,x264 和 FFmpeg 使用它提高性能。
  • libtool:統一管理庫文件的編譯、鏈接和安裝過程,屏蔽不同平臺的底層差異
  • zlib1g-dev:用于處理壓縮數據,如 PNG 解碼或某些容器格式,FFmpeg 核心功能需要。

二、ffmpeg依賴庫(apt安裝)

2.1 有哪些ffmpeg依賴庫

分類庫名稱用途FFmpeg 配置選項Ubuntu 安裝命令
視頻編碼libx264-devH.264 視頻編碼(高效、廣泛使用)--enable-libx264sudo apt install -y libx264-dev
libx265-devH.265/HEVC 視頻編碼(高壓縮率,適用于 4K/8K)--enable-libx265sudo apt install -y libx265-dev
libvpx-devVP8/VP9 視頻編碼(用于 WebM 格式)--enable-libvpxsudo apt install -y libvpx-dev
libtheora-devTheora 視頻編碼(開源視頻格式)--enable-libtheorasudo apt install -y libtheora-dev
libxvidcore-devXvid(MPEG-4)視頻編碼--enable-libxvidsudo apt install -y libxvidcore-dev
libaom-devAV1 視頻編碼(下一代開源視頻格式)--enable-libaomsudo apt install -y libaom-dev
音頻編碼libfdk-aac-dev高質量 AAC 音頻編碼(非自由軟件,需 --enable-nonfree--enable-libfdk-aacsudo apt install -y libfdk-aac-dev
libmp3lame-devMP3 音頻編碼--enable-libmp3lamesudo apt install -y libmp3lame-dev
libvorbis-devVorbis 音頻編碼(常用于 Ogg 容器)--enable-libvorbissudo apt install -y libvorbis-dev
libopus-devOpus 音頻編碼(低延遲、高質量,適合網絡傳輸)--enable-libopussudo apt install -y libopus-dev
其他常用功能庫libass-dev字幕渲染(支持 ASS/SSA 字幕格式)--enable-libasssudo apt install -y libass-dev
libfreetype6-dev字體渲染(用于字幕和文本疊加)--enable-libfreetypesudo apt install -y libfreetype6-dev
libsdl2-devSDL 庫,用于 FFmpeg 的 ffplay 播放器--enable-sdl2sudo apt install -y libsdl2-dev
zlib1g-dev壓縮支持(用于處理壓縮元數據,如 PNG 或某些容器格式)--enable-zlibsudo apt install -y zlib1g-dev
libva-dev硬件加速解碼/編碼(VAAPI,Intel/AMD GPU)--enable-vaapisudo apt install -y libva-dev
libvdpau-dev硬件加速解碼(VDPAU,NVIDIA GPU)--enable-vdpausudo apt install -y libvdpau-dev
libdav1d-devAV1 視頻解碼(高性能 AV1 解碼器)--enable-libdav1dsudo apt install -y libdav1d-dev
libopenjpeg-devJPEG 2000 圖像/視頻編碼--enable-libopenjpegsudo apt install -y libopenjpeg-dev

2.2 常見案例

最小化配置:x264、x265、fdk-aac 和 lame

安裝依賴

sudo apt install -y libx264-dev libx265-dev libfdk-aac-dev libmp3lame-dev

ffmpeg 4.4.1 編譯:

wget https://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
tar xf ffmpeg-4.4.1.tar.xz && cd ffmpeg-4.4.1./configure \--prefix="$(pwd)/../ffmpeg_build" \--enable-gpl \--enable-nonfree \--enable-libx264 \--enable-libx265 \--enable-libfdk-aac \--enable-libmp3lame \--enable-static \--disable-shared \--disable-docmake -j$(nproc) && make install

說明:

  • --enable-gpl--enable-nonfree 是 x264、x265 和 fdk-aac 必需的。
  • --extra-cflags--extra-ldflags 指定依賴庫的頭文件和庫路徑。
  • --disable-doc 跳過文檔生成,節省時間。
  • make -j$(nproc) 使用所有 CPU 核心加速編譯。

這是編譯、安裝的后的目錄結構:

laow@laow-pc:~/Downloads$ tree ffmpeg_build/ -L 2
ffmpeg_build/
├── bin
│   ├── ffmpeg
│   └── ffprobe
├── include
│   ├── libavcodec
│   ├── libavdevice
│   ├── libavfilter
│   ├── libavformat
│   ├── libavutil
│   ├── libpostproc
│   ├── libswresample
│   └── libswscale
├── lib
│   ├── libavcodec.a
│   ├── libavdevice.a
│   ├── libavfilter.a
│   ├── libavformat.a
│   ├── libavutil.a
│   ├── libpostproc.a
│   ├── libswresample.a
│   ├── libswscale.a
│   └── pkgconfig
└── share└── ffmpeg

三、ffmpeg依賴庫(手動編譯安裝)

所有源碼下載:ffmpeg4.4.1源代碼

3.1 編譯依賴庫

(1) 編譯x264

x264 是一個 H.264 視頻編碼庫,FFmpeg 使用其進行 H.264 編碼。

git clone https://code.videolan.org/videolan/x264.git
cd x264./configure --prefix="$(pwd)/../3rdparty" --enable-staticmake -j$(nproc) && make install

(2) 編譯x265

x265 用于 H.265/HEVC 編碼,需安裝 CMake。

wget https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz
tar xzvf x265_3.5.tar.gz && cd x265_3.5
mkdir tmp && cd tmpcmake -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../3rdparty \
../sourcemake -j$(nproc) && make install

(3) 編譯fdk-aac

fdk-aac 是高質量 AAC 編碼器,需 --enable-nonfree 編譯 FFmpeg。

wget https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz
tar -xf fdk-aac-2.0.2.tar.gz && cd fdk-aac-2.0.2/# 生成 configure 腳本
autoreconf -fiv./configure --prefix="$(pwd)/../3rdparty" --disable-sharedmake -j$(nproc) && make install

(4) 編譯mp3lame

LAME 用于 MP3 編碼,簡單易用。

wget https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz
tar -xf lame-3.100.tar.gz && cd lame-3.100./configure --prefix="$(pwd)/../3rdparty" --enable-static --disable-sharedmake -j$(nproc) && make install

3.2 編譯ffmpeg

wget https://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
tar xf ffmpeg-4.4.1.tar.xz && cd ffmpeg-4.4.1export PKG_CONFIG_PATH=$(pwd)/../3rdparty/lib/pkgconfig./configure \--prefix="$(pwd)/../ffmpeg_build" \--extra-cflags="-I$(pwd)/../3rdparty/include" \--extra-ldflags="-L$(pwd)/../3rdparty/lib" \--enable-gpl \--enable-nonfree \--enable-libx264 \--enable-libx265 \--enable-libfdk-aac \--enable-libmp3lame \--enable-static \--disable-shared \--disable-docmake -j$(nproc) && make install

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

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

相關文章

【圖片識別改名】如何批量識別大量圖片的文字并重命名圖片,基于WPF和京東OCR識別接口的實現方案

應用場景 在企業文檔管理、數字圖書館、電商商品管理等場景中,經常需要處理大量圖片中的文字信息。例如: 電商平臺需要將商品圖片中的型號、規格等信息提取出來作為文件名圖書館需要將掃描的圖書頁面識別為文字并整理歸檔企業需要將紙質文檔電子化并按…

簡歷模板2——數據挖掘工程師5年經驗

姓名 / Your Name 數據挖掘工程師 | 5年經驗 | 推薦/風控/圖模型 📞 138-XXXX-XXXX | ?? your.emailexample.com | 🌐 github.com/yourname | 📍 北京 🎯 個人簡介 / Summary 5年大廠數據挖掘經驗,碩士學歷。擅長推…

CSS3 漸變效果

1. 引言 CSS3 漸變能夠在指定顏色之間創建平滑過渡效果。這種設計元素不僅能為網頁增添豐富的視覺層次,更是現代網頁設計的重要組成部分。CSS3 提供兩種主要的漸變類型:線性漸變(Linear Gradient) - 沿直線方向進行顏色過渡;徑向漸變(Radial…

A Survey on 3D Gaussian Splatting——3D高斯領域綜述

原文鏈接:[2401.03890] A Survey on 3D Gaussian Splatting 動態更新的GitHub倉庫(包含性能對比與最新文獻追蹤): https://github.com/guikunchen/3DGS-Benchmarks https://github.com/guikunchen/Awesome3DGS 摘要&#xff1…

計算機網絡 期末實訓 eNSP 校園網

eNSP 綜合實訓 小型校園網 計算機網絡期末實訓 01 搭建拓撲 1.設計任務 構建一個小型校園網絡,涵蓋以下設備與區域: 學生宿舍區:50臺計算機辦公樓區:30臺計算機(細分為財務部門、人事部門及其他科室)圖書館:10臺計算機教學樓:30臺計算機服務器集群:2臺服務器,分別用…

Smart Form Adobe form 強制更改內表:TNAPR

強制更改內表:TNAPR se16-> Smart Form總覽 Smart form 變量格式說明: &symbol& (括號中,小寫字母為變量) &symbol& 屏蔽從第一位開始的N位 &symbol (n)& 只顯示前N位 &symbol (S)& 忽略正負號 &symbol (<)& 符號在…

頁面配置文件pages.json和小程序配置

頁面配置文件pages.json和小程序配置 pages.jsonpagesstyle-navigationBarBackgroundColorstyle-navigationBarTitleTextstyle-navigationStylestyle-enablePullDownRefresh注意事項不同平臺區分配置新建頁面 globalStyletabBar代碼 manifest.json授權web配置代理 pages.json …

Linux網絡配置工具ifconfig與ip命令的全面對比

在Linux網絡管理中&#xff0c;ifconfig和 ip命令是最常用的兩個工具。隨著時間的推移&#xff0c;ip命令逐漸取代了 ifconfig&#xff0c;成為更強大和靈活的網絡配置工具。本文將對這兩個工具進行全面對比&#xff0c;幫助您理解它們的區別和各自的優勢。 一、ifconfig命令 …

STM32 實現解析自定義協議

一、環形隊列設計與實現&#xff08;核心緩沖機制&#xff09; 數據結構設計&#xff1a; #define BUFFER_SIZE 512 #define BUFFER_MASK (BUFFER_SIZE - 1) typedef struct {volatile uint8_t buffer[BUFFER_SIZE]; // 環形緩沖區&#xff08;大小可配置&#xff09;volati…

NGINX 四層上游模塊`ngx_stream_upstream_module` 實戰指南

一、模塊定位與引入 模塊名稱&#xff1a;ngx_stream_upstream_module 首次引入&#xff1a;NGINX 1.9.0&#xff08;2015-08-04&#xff09; 編譯選項&#xff1a;啟用 --with-stream&#xff08;含此模塊&#xff09; 作用&#xff1a; 定義后端服務器組&#xff08;upstr…

WinUI3入門2:DataGrid動態更新 添加刪除和修改字段

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…

基于Python學習《Head First設計模式》第十三章 現實世界中的模式

定義設計模式 設計模式要素 模式名稱、分類意圖&#xff1a;描述模式是什么動機&#xff1a;描述什么時候使用這個模式&#xff0c;具體場景適用性&#xff1a;描述什么地方使用這個模式&#xff0c;用在什么場合結構&#xff1a;類圖參與者&#xff1a;類和對象的責任和角色…

線性代數(1)線性方程組的多種解法

求解線性方程組是線性代數的核心問題之一&#xff0c;根據方程組的類型&#xff08;如齊次/非齊次、方陣/非方陣、稀疏/稠密等&#xff09;&#xff0c;可以采用不同的解法。以下是常見的線性方程組解法分類及簡要說明&#xff1a; 一、直接解法&#xff08;精確解&#xff09…

肝臟/肝臟腫瘤圖像分割數據集(貓臉碼客第261期)

探秘肝臟/肝臟腫瘤圖像分割&#xff1a;醫學影像技術的新突破 一、引言 肝臟/肝臟腫瘤圖像分割在醫學領域占據著愈發重要的地位&#xff0c;為肝臟疾病的精準診斷與有效治療提供了關鍵技術支撐。隨著醫學成像技術的飛速進步&#xff0c;如磁共振成像&#xff08;MRI&#xff…

【LLM05---位置編碼】

文章目錄 位置編碼引出Transformer中位置編碼方法:Sinusoidal functions兩個重要性質位置編碼 最近在學習位置編碼,想找一個講的比較透徹的文章或視頻,找了半天,滿意的一個也沒有,所以自己記錄一下。 注意,本篇筆記只作為自己的學習記錄用,更好的講解的內容請看鏈接:位…

pikachu——ssrf

概念補充&#xff1a; 內網&#xff1a;局部范圍內的私有網絡&#xff0c;比如局域網就是一個小范圍的內網&#xff0c;有私有IP&#xff0c;并且內網受防火墻的保護&#xff0c;外網無法直接訪問 外網&#xff1a;全球范圍的公共網絡&#xff0c;公有ip ip地址&#xff1a;…

java 設計模式_行為型_13備忘錄模式

13.備忘錄模式 模式定義 備忘錄模式&#xff08;Memento Pattern&#xff09;模式的定義&#xff1a;在不破壞封裝性的前提下&#xff0c;捕獲一個對象的內部狀態&#xff0c;并在該對象之外保存這個狀態&#xff0c;以便以后當需要時能將該對象恢復到原先保存的狀態。該模式又…

創建postgres數據庫失敗

異常&#xff1a; postgres# CREATE DATABASE deepflow_agent2; ERROR: source database "template1" is being accessed by other users DETAIL: There are 2 other sessions using the database 如何斷聯這兩個session 要解決 PostgreSQL 中因 template1 數據庫…

臥安機器人闖上市:深耕AI具身技術,“大疆教父”李澤湘再落子

撰稿|行星 來源|貝多財經 又一家機器人企業&#xff0c;現身港股資本市場。貝多財經了解到&#xff0c;臥安機器人&#xff08;深圳&#xff09;股份有限公司&#xff08;下稱“臥安機器人”&#xff09;于6月8日向港交所提交了上市申請&#xff0c;國泰君安國際、華泰國際為…

基于GNU Radio Companion搭建的AM信號實驗

目錄 實驗目的和要求 1、AM收發系統仿真和實際接收 調制過程 2、Lab 2.1實驗過程AM信號的產生 AM信號的表達式 調制深度的概念 3、Lab2.2 AM信號的解調 4、Lab2.3 實際用RTLSDR接收一個ISM(912MHz)頻率的AM信號,信號的AM調制為音頻為48KHz的音樂信號 實驗目的和要求 …