下面的一切都是在 root 模式下進(jìn)行的,可以不再 root 模式下進(jìn)行
1. 安裝linux的基礎(chǔ)環(huán)境
基礎(chǔ)環(huán)境就是編譯代碼的基礎(chǔ)庫,Ubuntu聯(lián)網(wǎng)安裝軟件很簡單,一個語句即可搞定,這里列出語句如下:
# apt-get -y install autoconf automake build-essential libtool libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
2. 安裝依賴庫
依賴庫分兩方面,參考以下網(wǎng)站列出的依賴庫信息,本文選擇的版本均參考于此網(wǎng)頁: FFmpeg依賴庫信息
2.1 FFmpeg推薦的依賴開發(fā)庫(不需要獨(dú)立安裝)
# apt-get -y install libass-dev libfreetype6-dev libmp3lame-dev libtheora-dev libvorbis-dev libopus-dev libx264-dev yasm
2.2 FFmpeg 桌面應(yīng)用推薦的依賴開發(fā)庫(不需要獨(dú)立安裝)
# apt-get -y install libva-dev libvdpau-dev libsdl2-dev
2.3 需要獨(dú)立安裝的依賴開發(fā)庫
首先創(chuàng)建 FFmpeg 代碼目錄,所有的源代碼放在這個目錄下
# mkdir ~/ffmpeg_sources
2.3.1 安裝 fdk-aac-0.1.5:
# cd ~/ffmpeg_sources
# wget http://downloads.sourceforge.net/opencore-amr/fdk-aac-0.1.5.tar.gz
# tar -zxvf fdk-aac-0.1.5.tar.gz && mv fdk-aac-0.1.5 fdk-aac
# cd fdk-aac
# ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
# make
# make install
# make distclean
2.3.2 安裝 libvpx-1.6.1:
# cd ~/ffmpeg_sources
# wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.6.1.tar.bz2
# tar -jxvf libvpx-1.6.1.tar.bz2 && mv libvpx-1.6.1 libvpx
# cd libvpx
# PATH="$HOME/bin:$PATH"
# ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests
# PATH="$HOME/bin:$PATH"
# make
# make install
# make distclean
2.3.3 安裝 x265-2.4:
# cd ~/ffmpeg_sources
# sudo apt-get install cmake mercurial
# wget https://bitbucket.org/multicoreware/x265/downloads/x265_2.4.tar.gz
# tar -zxvf x265_2.4.tar.gz && mv x265_2.4 x265
# cd x265/build/linux
# PATH="$HOME/bin:$PATH"
# cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
# make
# make install
# make clean
2.3.4 安裝 x264:
# cd ~/ffmpeg_sources
# wget https://download.videolan.org/x264/snapshots/x264-snapshot-20170822-2245-stable.tar.bz2
# tar -jxvf x264-snapshot-20170822-2245-stable.tar.bz2 && mv x264-snapshot-20170822-2245-stable x264
# ./configure --prefix="$HOME/ffmpeg_build" --enable-shared --enable-pic
# make
# make install
# make distclean
3. 編譯FFmpeg
# cd ~/ffmpeg_sources
# wget http://ffmpeg.org/releases/ffmpeg-3.3.3.tar.xz
# tar -Jxvf ffmpeg-3.3.3.tar.xz && mv ffmpeg-3.3.3 ffmpeg
# cd ffmpeg
# PATH="$HOME/bin:$PATH"
# export 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" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
# PATH="$HOME/bin:$PATH"
# make
# make install
# make distclean
# hash -r
FFmpeg 編譯之后,即可使用。編譯生成的可執(zhí)行程序在 ~/bin 目錄下
注:上面的 ./configure 配置編譯后并不能進(jìn)行調(diào)試,需要如下配置.
4. FFmpeg 代碼 Debug
剛才的工程可以運(yùn)行,但不能debug。解決此問題,首先認(rèn)定一點(diǎn),生成的可執(zhí)行程序中,ffmpeg 不包含調(diào)試信息,調(diào)試信息在 ffmpeg_g 中,debug 要選擇 ffmpeg_g。
另外,./config選項也是確定包含調(diào)試信息的核心,需要在config中添加:
- -–enable-debug=3:開啟debug調(diào)試
- -–disable-asm:禁用 asm 優(yōu)化
- --disable-optimizations:禁用優(yōu)化,以便調(diào)試時按函數(shù)順序執(zhí)行。
- –-disable-stripping:禁用剝離可執(zhí)行程序和共享庫,即調(diào)試時可以進(jìn)入到某個函數(shù)進(jìn)行單獨(dú)調(diào)試。
采用以下命令重新config:
PATH="/home/rong/bin:$PATH" PKG_CONFIG_PATH="/home/rong/ffmpeg_build/lib/pkgconfig" ./configure
--prefix="/home/rong/ffmpeg_build"
--pkg-config-flags="--static"
--extra-cflags="-I/home/rong/ffmpeg_build/include"
--extra-ldflags="-L/home/rong/ffmpeg_build/lib"
--bindir="/home/rong/bin"
--enable-gpl
--enable-libass
--enable-libfdk-aac
--enable-libfreetype
--enable-libmp3lame
--enable-libopus
--enable-libtheora
--enable-libvorbis
--enable-libvpx
--enable-libx264
--enable-libx265
--enable-nonfree
--enable-pthreads
--enable-debug=3
--disable-optimizations
--disable-asm
--disable-stripping