概述
FFmpeg 是一個(gè)免費(fèi)開源的完整跨平臺解決方案,用于記錄、轉(zhuǎn)換和流傳輸音頻和視頻。FFmpeg 由一套庫和程序組成,用于處理視頻、音頻和其他多媒體文件和數(shù)據(jù)流,現(xiàn)在被廣泛用于視頻轉(zhuǎn)碼和視頻縮放。作為 YouTube 和 BiliBili 等許多軟件項(xiàng)目工作流程的關(guān)鍵部分,它的庫被 VLC 等諸多軟件媒體播放器使用。
本指南是為應(yīng)用程序架構(gòu)師和構(gòu)建工程師提供參考,幫助他們了解在構(gòu)建最新版的 FFmpeg、x264、x265、libvpx 和 libaom 時(shí),如何最優(yōu)化的利用 AmpereAltra 處理器的特性。
基于 Ampere 處理器的構(gòu)建指南
本文檔描述如何為 Ampere 處理器構(gòu)建最新版本的 FFmpeg 和相關(guān)視頻編解碼器,在 Ampere Altra 和 AmpereAltraMax 處理器上運(yùn)行視頻編碼負(fù)載,從而可以充分利用到行業(yè)領(lǐng)先的性能和電源效率。本文檔參考了 FFmpeg 編譯指南。
安裝的前提條件
按照 Linux 操作系統(tǒng) FFmpeg 編譯指南中“獲取依賴項(xiàng)(Get the Dependencies)”一節(jié)中的說明進(jìn)行操作。存在Ubuntu/Debian/Mint和CentOS/RHEL/Fedora的版本。驗(yàn)證前提條件是否正確安裝后,繼續(xù)執(zhí)行安裝。
設(shè)置
構(gòu)建指令中使用以下目錄作為 FFmpeg 源文件、構(gòu)建目錄和二進(jìn)制輸出目錄:
~/ffmpeg_sources – location for downloaded source files
~/ffmpeg_build – location of the build and output libraries
~/bin – location of binaries
創(chuàng)建以下路徑:
mkdir -p ~/ffmpeg_sources ~/ffmpeg_build ~/bin
用GCC構(gòu)建FFMPEG, X264, X265, LIBVPX 和 LIBAOM
FFmpeg 編譯指南描述了如何使用系統(tǒng)包安裝程序進(jìn)行安裝或如何下載并構(gòu)建最新版本。與 FFmpeg 編譯指南相比,本文檔描述了:
下載并構(gòu)建最新版本
這在 FFmpeg 編譯指南中也作為一種選項(xiàng)。
如何添加推薦的 gcc 編譯器選項(xiàng)
在 Arm 架構(gòu)上運(yùn)行 gcc 時(shí),建議使用 -mcpu=native 選項(xiàng)。
如何使用 FFmpeg 編譯指南中所描述的包的子集進(jìn)行構(gòu)建
如果您需要使用完整的 FFmpeg 功能,請參考下面列出的步驟的文檔,其中我們在描述如何構(gòu)建包的每個(gè)部分的開頭突出列出了我們的具體建議。
1
libx264 – 下載和構(gòu)建
注:我們修改默認(rèn)的構(gòu)建指令,在運(yùn)行 configure 時(shí)添加——extra-cflags="-mcpu=native"。
cd ~/ffmpeg_sources && git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && cd x264 && PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic --extra-cflags="-mcpu=native" && PATH="$HOME/bin:$PATH" make -j $(nproc) && make install
2
libx265 – 下載和構(gòu)建
注:從 bitbucket.org 下載 x265 來獲得最新的優(yōu)化,這很重要。此外,我們通過設(shè)置 CMake 環(huán)境標(biāo)志 CFLAGS 和 CXXFLAGS 來修改默認(rèn)的 FFmpeg 構(gòu)建指令,以便能啟用-mcpu=native 選項(xiàng)。
你也可以選擇使用 make 命令 PATH="$HOME/bin:$PATH" make -j $(nproc) VERBOSE=1>& make.log 并行構(gòu)建,并使用VERBOSE=1驗(yàn)證 gcc 是否正在使用-mcpu=native。
export CFLAGS="-mcpu=native" && export CXXFLAGS="-mcpu=native" sudo apt-get install libnuma-dev && cd ~/ffmpeg_sources && wget -O x265.tar.bz2 https://bitbucket.org/multicoreware/x265_git/get/master.tar.bz2 && tar xjvf x265.tar.bz2 && cd multicoreware*/build/linux && PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && PATH="$HOME/bin:$PATH" make -j $(nproc) && make install
3
libvpx – 下載和構(gòu)建
注:我們修改默認(rèn)的 FFmpeg 構(gòu)建指令來設(shè)置 configure 要用到的 extra_cflags 和extra_cxxflags。
export extra_cflags="-mcpu=native" export extra_cxxflags="-mcpu=native" cd ~/ffmpeg_sources && git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && cd libvpx && PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && PATH="$HOME/bin:$PATH" make -j $(nproc) && make install
4
libaom – 下載和構(gòu)建
注:我們修改默認(rèn)的 FFmpeg 構(gòu)建指令,以設(shè)置 CMake 用到的 CFLAGS 和 CXXFLAGS。
export CFLAGS="-mcpu=native" && export CXXFLAGS="-mcpu=native" cd ~/ffmpeg_sources && git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && mkdir -p aom_build && cd aom_build && PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_TESTS=OFF -DENABLE_NASM=on ../aom && PATH="$HOME/bin:$PATH" make -j $(nproc) && make install
5
FFmpeg – 下載和構(gòu)建
cd ~/ffmpeg_sources && wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && tar xjvf ffmpeg-snapshot.tar.bz2 && cd ffmpeg && PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include -mcpu=native" --extra-cxxflags="-mcpu=native" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --extra-libs="-lpthread -lm" --ld="g++" --bindir="$HOME/bin" --enable-gpl --enable-libaom --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree && PATH="$HOME/bin:$PATH" make -j $(nproc) && make install
驗(yàn)證和運(yùn)行 FFMPEG
如果構(gòu)建成功,您就可以運(yùn)行 FFmpeg 了。如下所示,祝賀你,現(xiàn)在可以做基準(zhǔn)測試了。
$ ls -1tr ~/bin x264 ffmpeg ffplay ffprobe
FFmpeg 運(yùn)行命令 ~/bin/ffmpeg
$ ~/bin/ffmpeg ffmpeg version XXX Copyright (c) 2000-2022 the FFmpeg developers ...
審核編輯:劉清
-
處理器
+關(guān)注
關(guān)注
68文章
19261瀏覽量
229659 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
593瀏覽量
27392 -
VLC
+關(guān)注
關(guān)注
0文章
42瀏覽量
15567 -
ffmpeg
+關(guān)注
關(guān)注
0文章
46瀏覽量
7395
原文標(biāo)題:安博士講堂 | 優(yōu)化指南-FFmpeg 構(gòu)建和優(yōu)化
文章出處:【微信號:AmpereComputing,微信公眾號:安晟培半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論