FFmpeg開發筆記(二十四)Linux環境給FFmpeg集成AV1的編解碼器

来源:https://www.cnblogs.com/aqi00/p/18199491
-Advertisement-
Play Games

​AV1是一種新興的免費視頻編碼標準,它由開放媒體聯盟(Alliance for Open Media,簡稱AOM)於2018年制定,融合了Google VP10、Mozilla Daala以及Cisco Thor三款開源項目的成果。據說在實際測試中,AV1標準比H.265(HEVC)的壓縮率提升了 ...


AV1是一種新興的免費視頻編碼標準,它由開放媒體聯盟(Alliance for Open Media,簡稱AOM)於2018年制定,融合了Google VP10、Mozilla Daala以及Cisco Thor三款開源項目的成果。據說在實際測試中,AV1標準比H.265(HEVC)的壓縮率提升了大約27%。由於AV1具有性能優勢,並且還是免費授權,因此各大流媒體平臺更傾向使用AV1而非HEVC標準。

AV1如此炙手可熱,以致它的編解碼器如雨後春筍,單單FFmpeg支持的AV1編解碼器,就有libaom、libdav1d、libsvtav1、librav1e四種。經過在Linux環境實地驗證,前三種都能在華為雲的歐拉系統上編譯集成,只有librav1e尚未成功編譯。下麵就介紹如何在Linux環境給FFmpeg集成libaom、libdav1d、libsvtav1這三種AV1編解碼庫。

一、安裝libaom

libaom是谷歌提供的AV1編解碼工具,其代碼托管在谷歌網站,國內無法訪問,開發者可通過清華大學的鏡像網站下載它的源碼,下載地址是https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/pool/main/a/aom/aom_3.7.1.orig.tar.gz。
libaom的安裝步驟說明如下。
1、將下載好的壓縮包上傳到伺服器並解壓,也就是依次執行以下命令。

tar zxf aom_3.7.1.orig.tar.gz
cd aom-3.7.1

2、進入解壓後的build目錄,運行下麵命令配置libaom。

cd build
cmake ..

3、運行下麵命令編譯libaom。

make -j4

4、編譯完成後,運行下麵命令安裝libaom。

make install

二、安裝libsvtav1

SVT-AV1項目最初由英特爾與奈飛公司合作創建,後來被AOM官方收編,它的源碼托管頁面在https://gitlab.com/AOMediaCodec/SVT-AV1。因為《FFmpeg開發實戰:從零基礎到短視頻上線》一書採用的FFmpeg版本為5.1.2,相容該版本FFmpeg的SVT-AV1最高版本為1.4.0,所以需要下載這個源碼鏈接https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v1.4.0/SVT-AV1-v1.4.0.tar.gz。註意,如果使用更高版本的SVT-AV1,會導致後面FFmpeg編譯失敗。
libsvtav1的安裝步驟說明如下。
1、將下載好的壓縮包上傳到伺服器並解壓,也就是依次執行以下命令。

tar zxvf SVT-AV1-v1.4.0.tar.gz
cd SVT-AV1-v1.4.0

2、進入解壓後的Build目錄,運行下麵命令配置libsvtav1。

cd Build
cmake ..

3、運行下麵命令編譯libsvtav1。

make -j4

4、編譯完成後,運行下麵命令安裝libsvtav1。

make install

三、安裝libdav1d

libdav1d是一款AV1的解碼器,只負責解碼,不負責編碼。它的源碼托管頁面在https://code.videolan.org/videolan/dav1d/,源碼包的下載地址是https://code.videolan.org/videolan/dav1d/-/archive/1.3.0/dav1d-1.3.0.tar.gz。
libdav1d的安裝步驟說明如下。
1、安裝編譯工具meson和ninja
meson和ninja是基於Python語言的編譯工具,故需確保伺服器已經安裝了Python3。另外,由於伺服器訪問國外網站不穩定,因此可先設置國內的資源鏡像網站,比如移動雲。具體的鏡像設置與工具安裝命令如下:

pip config set global.index-url https://ecloud.10086.cn/api/query/developer/nexus/repository/python-sdk/simple
pip3 install meson
pip3 install ninja

2、將下載好的壓縮包上傳到伺服器並解壓,也就是依次執行以下命令。

tar zxvf dav1d-1.3.0.tar.gz
cd dav1d-1.3.0

3、進入解壓後的build目錄,運行下麵命令配置libdav1d。

mkdir build
cd build
meson setup

4、運行下麵命令編譯libdav1d。

ninja

5、編譯完成後,運行下麵命令安裝libdav1d。

ninja install

四、讓FFmpeg啟用libaom、libdav1d、libsvtav1

由於FFmpeg預設未啟用libaom、libdav1d、libsvtav1,因此需要重新配置FFmpeg,標明啟用libaom、libdav1d、libsvtav1,然後重新編譯安裝FFmpeg。FFmpeg的Linux環境完整編譯過程參見《FFmpeg開發實戰:從零基礎到短視頻上線》一書的“1.2.3  自行編譯與安裝FFmpeg”,詳細的啟用步驟說明如下。
1、載入環境變數PKG_CONFIG_PATH和LD_LIBRARY_PATH
因為libaom、libdav1d、libsvtav1三個庫預設安裝在/usr/local/lib64目錄,所以要將相關路徑載入到PKG_CONFIG_PATH和LD_LIBRARY_PATH。執行下麵命令編輯profile文件:

cd
vi .bash_profile

往.bash_profile的文件末尾添加下麵兩行:

export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64

保存並退出.bash_profile之後,執行以下命令載入環境變數:

source .bash_profile

然後執行下麵的環境變數查看命令,確保環境變數PKG_CONFIG_PATH和LD_LIBRARY_PATH已經成功載入。

env | grep PKG_CONFIG_PATH
env | grep LD_LIBRARY_PATH

2、回到FFmpeg源碼的目錄,執行以下命令重新配置FFmpeg,主要增加啟用libaom、libdav1d、libsvtav1。(增加了選項--enable-libaom --enable-libsvtav1 --enable-libdav1d)

./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libdavs2 --enable-libmp3lame --enable-libfreetype --enable-libass --enable-libfribidi --enable-libxml2 --enable-fontconfig --enable-sdl2 --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libopus --enable-libvpx --enable-openssl --enable-libaom --enable-libsvtav1 --enable-libdav1d --enable-libuavs3d --enable-iconv --enable-gpl --enable-nonfree

3、運行下麵命令編譯FFmpeg。

make clean
make -j4

4、執行下麵命令安裝FFmpeg。

make install

5、運行以下命令查看FFmpeg的版本信息。

ffmpeg -version

查看控制台回顯的FFmpeg版本信息,找到“--enable-libaom --enable-libsvtav1 --enable-libdav1d”,說明FFmpeg正確啟用了AV1的三個編解碼器libaom、libdav1d、libsvtav1。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Spring AI 初學 Spring AI 官方地址 ”spring 不生產 AI,只是 AI 工具的搬運工“ 項目可以查看gitee Open AI 前期準備 Open AI官方地址,需要使用魔法才能打開,同時購買很麻煩,建議淘寶進行購買,只需要購買 open ai 的 apikey 即可。 a ...
  • 在財稅工作中,處理髮票信息是一項繁瑣而重要的任務。然而,藉助先進的技術,我們可以將這個過程簡化並提高效率。今天,我將介紹一個API介面,它可以在秒級內識別發票信息,讓財稅工作變得更輕鬆。 這個API介面是由挖數平臺提供的,你可以在他們的網站上找到詳細的信息。它支持對多種類型的發票進行結構化識別,包括 ...
  • 一、爬取目標 小紅書是眾多客戶的流量藍海,可通過評論區數據高效引流獲客。我用python開發的爬蟲採集軟體,可自動抓取小紅書評論數據,並且含二級評論數據。 為什麼有了源碼還開發界面軟體呢?方便不懂編程代碼的小白用戶使用,無需安裝python,無需改代碼,雙擊打開即用! 1.1 效果截圖 軟體界面截圖 ...
  • 作者:l拉不拉米 鏈接:https://juejin.cn/post/7031445206152577061 一、前言 公司剛入職了一名中級Java開發,經過一個星期的適應學習,各方面表現還不錯,於是分配了一個小的迭代給新人做。 需求很簡單,把從第三方拉取的數據匹配到自身公司後臺設置的渠道後,聚合到 ...
  • 目的:求多個集合之前的並集,例如:現有四個集合C1 = {11, 22, 13, 14}、C2 = {11, 32, 23, 14, 35}、C3 = {11, 22, 38}、C4 = {11, 22, 33, 14, 55, 66},則它們之間的並集應該為: C1 & C2 & C3 = {11 ...
  • 1.排序方式 假設有一個序列,數據為:['n1', 'n2', 'n10', 'n11', 'n21', 'n3', 'n13', 'n20', 'n23'], 排序後需要達到這個效果:['n1', 'n2', 'n3', 'n10', 'n11', 'n13', 'n20', 'n21', 'n2 ...
  • 介紹 在學習了sylar的C++高性能分散式伺服器框架後,想把自己在學習過程中的感想記錄下來。當然主要原因還是sylar的B站視頻過於難以理解了,也是想加強一下自己對這個框架的理解。很多內容也是借鑒了其他大佬的博文,比如找人找不到北,zhongluqiang 日誌模塊概述 日誌模塊的目的: 用於格式 ...
  • 本文介紹JupyterLab中菜單欄按鈕無法點擊、快捷鍵無法執行問題的解決辦法。 近期打開JupyterLab後,發現其中菜單欄按鈕無法點擊,快捷鍵也均無法執行。如圖,紅框內的按鈕點擊均無任何反應。 為解決這一問題,首先嘗試關閉VPN、瀏覽器代理設置等,均不奏效。隨後,在搜索時看到Stack Ove ...
一周排行
    -Advertisement-
    Play Games
  • 前言 微服務架構已經成為搭建高效、可擴展系統的關鍵技術之一,然而,現有許多微服務框架往往過於複雜,使得我們普通開發者難以快速上手並體驗到微服務帶了的便利。為瞭解決這一問題,於是作者精心打造了一款最接地氣的 .NET 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...