【寫在前面】飛騰開發者平台是基於飛騰自身強大的技術基礎和開放能力,聚合行業內優秀資源而打造的。該平台覆蓋了操作系統、算法、數據庫、安全、平台工具、虛擬化、存儲、網絡、固件等多個前沿技術領域,包含了應用使能套件、軟件倉庫、軟件支持、軟件適配認證四大板塊,旨在共享尖端技術,為開發者提供一個涵蓋多領域的開發平台和工具套件。點擊這裏開始你的技術升級之旅吧
本文分享至飛騰開發者平台《飛騰平台FFmpeg安裝使用指南》
1 介紹
FFmpeg是一個免費的軟件框架,用於對包括音頻和視頻在內的多媒體文件進行轉碼。本指南描述瞭如何在飛騰平台編譯安裝帶有x264和x265庫的FFmpeg以及如何使用FFmpeg進行視頻轉碼測試。
2 環境要求
2.1 硬件環境
硬件環境如下表所示。
| 項目 | 説明 |
|---|---|
| CPU | FT-2000+/64、飛騰騰雲 S2500、FT-2000/4、飛騰騰鋭 D2000 |
| 網絡 | |
| 存儲 | |
| 內存 |
2.2 軟件環境
軟件環境如下表所示。
| 項目 | 版本 | 下載地址 |
|---|---|---|
| OS | centos8.2、Kylin V10、 Ubuntu19.10 | |
| GCC | 9.2.1、7.3.0、8.3.1、9.3.0 | |
| GNU Binutils | 2.32、2.33、2.34、2.35 | |
| Glibc | 2.28、2.23、2.31、2.30 | |
| Yasm | https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz | |
| libx264 | https://code.videolan.org/videolan/x264.git | |
| libx265 | https://bitbucket.org/multicoreware/x265_git | |
| FFmpeg | https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 |
3 部署FFmpeg
3.1 環境搭建
步驟一 創建目錄。
$ cd $HOME
$ mkdir ffmpeg_sources //下載所有相關的源文件
$ mkdir ffmpeg_build //構建文件和安裝庫
$ mkdir bin //安裝生成的二進制文件
步驟二 獲取依賴項。
# 獲取編譯所必須的依賴項
$ yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc
gcc-c++ libtool make pkgconfig zlib-devel
3.2 獲取Yasm
Yasm是一些庫使用的彙編程序,可以加速編譯構建的過程。
$ cd $HOME/ffmpeg_sources
$ curl -O -L
https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
$ tar xzvf yasm-1.3.0.tar.gz
$ cd yasm-1.3.0
$ ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
$ make
$ make install
3.3 安裝libx264
libx264是H.264視頻編碼器,在編譯ffmpeg時需要配置--enable-gpl --enable-libx264。
$ cd $HOME/ffmpeg_sources
$ git clone --branch stable --depth 1
https://code.videolan.org/videolan/x264.git
$ cd x264
$ PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure
--prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
$ make
$ make install
3.4 安裝libx265
libx265是H.265/HEVC視頻編碼器,在編譯ffmpeg時需要配置--enable-gpl --enable-libx265。
$ cd ~/ffmpeg_sources
$ git clone --branch stable --depth 2
https://bitbucket.org/multicoreware/x265_git
$ cd ~/ffmpeg_sources/x265_git/build/linux
$ cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build"
-DENABLE_SHARED:bool=off ../../source
$ make
$ make install
3.5 構建FFmpeg
$ cd $HOME/ffmpeg_sources
$ curl -O -L 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" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs=-lpthread \
--extra-libs=-lm \
--bindir="$HOME/bin ”\
--enable-gpl \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree
$ make
$ make install
4 FFmpeg測試
在FFmpeg中,預設決定了編碼速度(以壓縮效率為代價),可選的預設選項為ultrafast, superfast, veryfast, faster, fast,medium, slow, slower, veryslow,如果選擇ultrafast,編碼過程將運行的很快,與medium相比,文件大小會更大,但視覺效果是相同的。
視頻比特率是視頻數據隨時間傳輸的速率,比特率越高,質量越好,但編碼需要更長的時間,這會與之前選擇的預設類型一起影響視頻的編碼速度和質量。
測試使用ffmpeg將y4m格式的視頻輸入編碼到x264和x265文件,輸入的y4m視頻源由此下載:https://media.xiph.org/video/derf/
步驟一 下載視頻源。
$ cd $HOME
$ mkdir ffmpeg_video
$ cd ffmpeg_video
$ wget https://media.xiph.org/video/derf/y4m/in_to_tree_1080p50.y4m
步驟二 ffmpeg測試。
測試指令:
$ ffmpeg -i in.y4m -codec:v libx264 -preset <preset> -b:v <bitrate> -maxrate <bitrate> -bufsize <2*bitrate> -tune psnr out.264
$ ffmpeg -i in.y4m -codec:v libx265 -preset <preset> -b:v <bitrate> -maxrate <bitrate> -bufsize <2*bitrate> -tune psnr out.265
使用以下配置來測試ffmepg:
$ ffmpeg -i in_to_tree_1080p50.y4m -codec:v libx264 -preset faster -b:v 5M -maxrate 5M -bufsize 10M -tune psnr in_to_tree_1080p50_faster.264
$ ffmpeg -i in_to_tree_1080p50.y4m -codec:v libx265 -preset faster -b:v 5M -maxrate 5M -bufsize 10M -tune psnr in_to_tree_1080p50_faster.265
在ffmpeg測試腳本運行完成後會在ffmpeg_video目錄下出現相應in_to_tree_1080p50_faster.264與in_to_tree_1080p50_faster.265文件。
推薦閲讀
- 飛騰平台Arm NN軟件棧安裝使用指南
- 飛騰平台Arm ComputeLibrary編譯安裝指南
歡迎廣大開發者來飛騰開發者平台獲取更多前沿技術文檔及資料
如開發者在使用飛騰產品有任何問題可通過在線工單聯繫我們
版權所有。飛騰信息技術有限公司 2023。保留所有權利。
未經本公司同意,任何單位、公司或個人不得擅自複製,翻譯,摘抄本文檔內容的部分或全部,不得以任何方式或途徑進行傳播和宣傳。
商標聲明
Phytium和其他飛騰商標均為飛騰信息技術有限公司的商標。
本文檔提及的其他所有商標或註冊商標,由各自的所有人擁有。
注意
本文檔的內容視為飛騰的保密信息,您應當嚴格遵守保密任務;未經飛騰事先書面同意,您不得向任何第三方披露本文檔內容或提供給任何第三方使用。
由於產品版本升級或其他原因,本文檔內容會不定期進行更新。除非另有約定,本文檔僅作為使用指導,飛騰在現有技術的基礎上盡最大努力提供相應的介紹及操作指引,但飛騰在此明確聲明對本文檔內容的準確性、完整性、適用性、可靠性的等不作任何明示或暗示的保證。
本文檔中所有內容,包括但不限於圖片、架構設計、頁面佈局、文字描述,均由飛騰和/或其關聯公司依法擁有其知識產權,包括但不限於商標權、專利權、著作權等。非經飛騰和/或其關聯公司書面同意,任何人不得擅自使用、修改,複製上述內容。