Skip to content

编译ffmpeg和x264,并生成性能分析图

编译nasm

cd $HOME
mkdir $HOME/ffmpeg_build

wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2
tar xjvf nasm-2.14.02.tar.bz2
cd nasm-2.14.02
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install

编译x264

下载x264代码 https://www.videolan.org/developers/x264.html

cd $HOME
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar xvf x264-master.tar.bz2
mv x264-master x264
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  --enable-gprof --enable-debug

make
make install

编译ffmpeg

下载ffmpeg代码

cd $HOME
wget https://www.ffmpeg.org/releases/ffmpeg-4.2.2.tar.gz

tar xvf ffmpeg-4.2.2.tar.gz

编译

cd ffmpeg-4.2.2
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" --bindir="$HOME/bin" --extra-cflags=-pg --extra-ldflags=-pg --extra-cxxflags=-pg --disable-stripping --enable-libx264 --enable-gpl

make
make install

执行ffmpeg转码,性能分析

ffmpeg -re  -i input    -c:v libx264 -c:a copy -profile:v baseline  -b:v 1.5M -bufsize 1M  -level 3.1 -bsf:a aac_adtstoasc   -s 720x1280 output.mp4				

可以看到当前目录生成了一个文件 gmon.out

用gprof分析文件结果

gprof ~/bin/ffmpeg gmon.out > profile.txt

可以安装gprof2dot生成可视化调用图,使结果更加直观可读 https://github.com/jrfonseca/gprof2dot

gprof2dot profile.txt| dot -Tsvg -o profile.svg

结果如下图所示:

image 点击查看大图

编译过程参考 https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

Related Posts

  1. 编译x264,并使用x264进行视频编码
  2. 为什么go不支持递归锁