分享

Ubuntu14.04安装编译ffmpeg

 simon_lu_gz 2016-12-27

因为要用到improved dense trajectory特征,用源码需要编译ffmpeg和OpenCV,网址给出的源码需要的OpenCV-2.4.2 和ffmpeg-0.11.1都比较老,我用的是比较新的opencv2.4.12和ffmpeg-snapshot.tar.bz2 (2016-05-22)。

本文主要基于此官方指导编译

1. 安装依赖

sudo apt-get update
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
mkdir ~/ffmpeg_sources 

Yasm

sudo apt-get install yasm

libx264

sudo apt-get install libx264-dev


libx265

sudo apt-get install cmake mercurial
cd ~/ffmpeg_sources
hg clone https:///multicoreware/x265
cd ~/ffmpeg_sources/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 distclean

libfdk-aac

cd ~/ffmpeg_sources
wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master
tar xzvf fdk-aac.tar.gz
cd mstorsjo-fdk-aac*
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

libmp3lame

sudo apt-get install libmp3lame-dev

libopus

sudo apt-get install libopus-dev

libvpx

cd ~/ffmpeg_sources
wget http://storage./downloads.webmproject.org/releases/webm/libvpx-1.5.0.tar.bz2
tar xjvf libvpx-1.5.0.tar.bz2
cd libvpx-1.5.0
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests
PATH="$HOME/bin:$PATH" make
make install
make clean

avdevice

sudo apt-get install libavdevice-dev

ffmpeg

cd ~/ffmpeg_sources
wget http:///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"   --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就编译安装结束了,编译过的ffmpeg在~/bin 目录下

2、Usage

两种方法使用ffmpeg

  • 进入~/bin文件夹,然后调用binary文件: cd ~/bin && ./ffmpeg -i ~/input.mp4 ~/videos/output.mkv
  • 使用绝对路径:/home/yourusername/bin/ffmpeg -i ../input.mp4 ../videos/output.mkv

如果想要ffmpeg在所有地方都能直接调用,需要先注销,然后登陆。
或者执行source ~/.profile

3、Documentation

如果想要用man ffmpeg命令看文档,执行下面命令

echo "MANPATH_MAP $HOME/bin $HOME/ffmpeg_build/share/man" >> ~/.manpath

注销,然后登陆即可。

4、更新FFmpeg

rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffplay,ffserver,vsyasm,x264,x265,yasm,ytasm}

5、编译FFMPEG自带的examples,以remuxing.c为例
remuxing: remuxing.o gcc -Llibavcodec -Llibavdevice -Llibavfilter -Llibavformat -Llibavresample -Llibavutil -Llibpostproc -Llibswscale -Llibswresample -LHOME/ffmpeg_build/lib -Wl,--as-needed -Wl,-z,noexecstack -Wl,--warn-common -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample -o remuxing remuxing.o -lavdevice -lavfilter -lavformat -lavcodec -lpostproc -lswresample -lswscale -lavutil -ldl -ldl -lvdpau -lva -lva-drm -lva -lva-x11 -lva -lxcb -lXau -lXdmcp -lxcb-shm -lxcb -lXau -lXdmcp -lxcb-xfixes -lxcb-render -lxcb-shape -lxcb -lXau -lXdmcp -lxcb-shape -lxcb -lXau -lXdmcp -lX11 -lasound -lx264 -lpthread -lm -ldl -ltheoraenc -ltheoradec -logg -lopus -lm -lmp3lame -lfreetype -lz -lpng12 -L/home/lxm/ffmpeg_build/lib -lfdk-aac -lm -lass -lfontconfig -lenca -lm -lfribidi -lexpat -lfreetype -lz -lpng12 -lm -llzma -lz -pthread
remuxing.o: remuxing.c gcc -o remuxing.o -I/home/lxm/ffmpeg_build/include -c remuxing.c

6、使用ffmpeg x264进行编码的时候,avcodec_open报错:
[libx264 @ 00021bb0]broken ffmpeg default settings detected
[libx264 @ 00021bb0]use an encoding preset (vpre)
解决方法:
avcodec_open函数之间增加如下几个AVCodecContext 的初始化:
/*default settings for x264*/
        ctx->me_range = 16;
        ctx->max_qdiff = 4;
        ctx->qmin = 10;
        ctx->qmax = 51;
        ctx->qcompress = 0.6; 


                                    

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多