概述
FFmpeg 是一套處理多媒體文件的軟件庫(kù)。憑借這些強(qiáng)大的庫(kù),F(xiàn)Fmpeg 能夠轉(zhuǎn)換格式、推流以及處理音頻和視頻文件。許多 Linux 的前端應(yīng)用都使用 FFmpeg 作為后端支持,所以這些應(yīng)用對(duì) FFmpeg 的依賴(lài)度非常高。
舉個(gè)例子
- 錄屏軟件可能會(huì)用到 FFmpeg 將錄屏轉(zhuǎn)換為 gif 動(dòng)圖。
- 此外VLC 多媒體播放器、YouTube、Blender、Kodi、Shotcut 和 Handbrake 等流行的應(yīng)用與服務(wù)都在使用 FFmpeg,這僅僅一小部分。
- 趣事:NASA 火星 2020 計(jì)劃的探測(cè)器“毅力”號(hào)在將圖像和視頻發(fā)送到地球之前,會(huì)先使用 FFmpeg 對(duì)其進(jìn)行處理。
FFmpeg 是用 C 語(yǔ)言和匯編語(yǔ)言編寫(xiě)的,性能強(qiáng)大,提供跨平臺(tái)支持。FFmpeg 的核心是命令行實(shí)用程序,既可在命令行上使用,也可以經(jīng)由任何程序語(yǔ)言調(diào)用。比如,你可以在 Shell 程序或 python 腳本中使用 FFmpeg。
- ffmpeg:用于轉(zhuǎn)換音視頻格式,包括來(lái)自視頻直播的信號(hào)源。
- ffplay:FFmpeg 配套使用的媒體播放器
- ffprobe:顯示媒體文件信息的命令行工具,可將信息輸出為 csv、xml、json 等格式。
安裝依賴(lài)
安裝依賴(lài)
install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel -y
編譯 nasm
nasm即Netwide Assembler,是一款基于英特爾 x86 架構(gòu)的匯編與反匯編工具。新版ffmpeg以及x264、x265依賴(lài)的匯編器。 需要注意的是,nasm是英特爾x86平臺(tái)匯編器,不需要交叉編譯,如果是arm等其他平臺(tái),交叉編譯 ffmpeg 時(shí)需要添加選項(xiàng) --disable-x86asm。
wget https://www.nasm.us/pub/nasm/releasebuilds/2.16/nasm-2.16.tar.gz
tar zxvf nasm-2.16.tar.gz
cd nasm-2.16
./autogen.sh
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make && make install
ln -s /opt/ffmpeg/nasm /usr/bin/nasm
編譯yasm
yasm, 舊版本的ffmpeg以及x264、x265依賴(lài)的匯編器。yasm同nasm,也是x86平臺(tái)匯編器,同樣不需要交叉編譯,如果是arm等其他平臺(tái),交叉編譯 ffmpeg 時(shí)需要添加選項(xiàng) --disable-yasm。
cd ~/ffmpeg
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
ln -s /opt/ffmpeg/yasm-1.3.0/yasm /usr/bin/yasm
編譯 libx264
x264是開(kāi)源的h264編碼器,ffmpeg 本身自帶了h264解碼器,但是沒(méi)有h264編碼器,所以我們這里安裝第三方編碼器x264。
cd ~/ffmpeg
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
編譯libx265
x265等同于x264,它是開(kāi)源的h265編碼器,ffmpeg 本身自帶了h265解碼器,但是沒(méi)有h265編碼器,所以我們這里安裝第三方編碼器x265。
cd ~/ffmpeg
git clone --branch stable --depth 2 https://bitbucket.org/multicoreware/x265_git
cd x265_git/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install
編譯libfdk_aac
libfdk_aac是一個(gè)開(kāi)源庫(kù),用于以AAC 格式對(duì)數(shù)字音頻數(shù)據(jù)進(jìn)行編碼和解碼。
cd ~/ffmpeg
git clone --depth 1 https://github.com/mstorsjo/fdk-aac.git
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make && make install
編譯libmp3lame
libmp3lame是開(kāi)源的mp3編碼器。
cd ~/ffmpeg
wget https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar xzvf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make && make install
編譯libopus
wget https://github.com/xiph/opus/releases/download/v1.4/opus-1.4.tar.gz
cd opus-1.4
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
編譯libvpx
VP8/VP9編碼解碼SDK
wget https://github.com/webmproject/libvpx/archive/refs/tags/v1.13.0.tar.gz
mv v1.13.0 libvpx-1.13.0.tar.gz
tar zxvf libvpx-1.13.0.tar.gz
cd libvpx-1.13.0
--
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make && make install
ffmpeg安裝
#wget http://www.ffmpeg.org/releases/ffmpeg-6.0.tar.gz
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-libfdk_aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree
make
make install
- 安裝檢查
ffmpeg -version
--輸出--
ffmpeg version N-112211-g48fc414c7c Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-44)
configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs=-lpthread --extra-libs=-lm --bindir=/root/bin --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil 58. 25.100 / 58. 25.100
libavcodec 60. 27.100 / 60. 27.100
libavformat 60. 13.100 / 60. 13.100
libavdevice 60. 2.101 / 60. 2.101
libavfilter 9. 11.100 / 9. 11.100
libswscale 7. 3.100 / 7. 3.100
libswresample 4. 11.100 / 4. 11.100
libpostproc 57. 2.100 / 57. 2.100