zoukankan      html  css  js  c++  java
  • Linux 源码安装 FFmpeg

      加班次数频繁,已经快一年没有写博了。由于此次在项目中使用到了 FFmpeg 来处理音视频,顾记录下在 Linux 系统中源码安装 FFmpeg 以便不时之需。

    1. 安装 yasm

      yasm 是一个汇编编译器。FFmpeg 编译中为了提高编译速度,使用了汇编命令,如果不想安装此功能,则只需在后续安装 FFmpeg 中使用 ./configure –disable-yasm 选项。

      下载地址:http://yasm.tortall.net/Download.html

      安装命令:

      (1)上传下载的 yasm 文件 yasm-1.3.0.tar.gz,本人上传至 /home/ffmpeg/ 文件目录中。

      (2)解压文件并安装

    -bash-4.2# cd /home/ffmpeg/
    -bash-4.2# tar zxvf yasm-1.3.0.tar.gz
    -bash-4.2# cd yasm-1.3.0
    -bash-4.2# ./configure
    -bash-4.2# make
    -bash-4.2# make install

     2. 安装 FFmpeg

      下载地址:https://ffmpeg.org/download.html

      安装命令:

      (1)解压安装包并进入该目录

    -bash-4.2# tar -jxvf ffmpeg-4.1.tar.bz2
    -bash-4.2# cd ffmpeg-4.1

      (2)配置项,具体配置项见文末

    -bash-4.2# ./configure --enable-shared --enable-swscale --enable-gpl --enable-nonfree --enable-pic --prefix=/usr/local/ffmpeg --enable-version3 --enable-postproc --enable-pthreads --enable-avisynth

      –enable-shared 表示生成动态链接库,可以供以后编程使用,同时生成的可执行程序也依赖这些动态库。如果不加上 –enable-shared 选项则使用静态链接的方式编译,此时不会生成动态库,同时生成的 FFmpeg 等的可执行文件也比较大,但他们不需要动态库就可以直接运行。
      –prefix 表示程序安装的目录,这里设为 /usr/local/ffmpeg。

      (3)编译安装

      编译需要等待一段的时间,但编译成功后安装也就很快完成。

    -bash-4.2# make
    -bash-4.2# make install

    3. 路径配置

      为了方便在各个路径下使用 ffmpeg 命令,需配置一些路径,包括加入系统环境变量。

      安装完成后将会在 /usr/local/ffmpeg 目录下出现三个文件目录:

    -bash-4.2# cd /usr/local/ffmpeg/
    -bash-4.2# ls
    bin  include  lib  share
    • bin:可执行文件目录
    • lib:动态链接库目录
    • include:编程用到的头文件目录

      (1)添加动态库路径

      通过打开 /etc/ld.so.conf 文件发现只有 include ld.so.conf.d/*.conf 一句。

    -bash-4.2# vi /etc/ld.so.conf
    include ld.so.conf.d/*.conf

      表明其包含了 ld.so.conf.d 下所有的 conf 文件,于是可以在 /etc/ld.so.conf.d/ 创建一个新的文件 ffmpeg.conf,其中包含一句话,即为 ffmpeg 的 lib 目录。

    -bash-4.2# cd /etc/ld.so.conf.d/
    -bash-4.2# vi ffmpeg.conf
    /usr/local/ffmpeg/lib

      路径 /usr/local/ffmpeg/lib 为新加的配置文件 ffmpeg.conf 中的内容。

      执行 ldconfig -v 命令,更新 ld.so.cache,使修改立即生效:

    -bash-4.2# ldconfig -v

      (2)创建软连接

      相当于 windows 中的创建快捷方式:

    -bash-4.2# ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/
    -bash-4.2# ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/
    -bash-4.2# ln -s /usr/local/ffmpeg/bin/ffserver /usr/local/bin/

      (3)头文件拷贝

      路径 /usr/local/ffmpeg/include/ 包含的文件信息如下:

    -bash-4.2# cd /usr/local/ffmpeg/include/
    -bash-4.2# ls
    libavcodec   libavfilter  libavutil    libswresample
    libavdevice  libavformat  libpostproc  libswscale

      /usr/local/ffmpeg/include 目录下创建 ffmpeg 目录:

    -bash-4.2# mkdir ffmpeg

      将 /usr/local/ffmpeg/include 路径下所有目录复制到 ffmpeg 目录中:

    -bash-4.2# cp -r libswscale/ /usr/local/ffmpeg/include/ffmpeg/
    -bash-4.2# cp -r libswresample/ /usr/local/ffmpeg/include/ffmpeg/
    -bash-4.2# cp -r libpostproc/ /usr/local/ffmpeg/include/ffmpeg/
    -bash-4.2# cp -r libavutil/ /usr/local/ffmpeg/include/ffmpeg/
    -bash-4.2# cp -r libavformat/ /usr/local/ffmpeg/include/ffmpeg/
    -bash-4.2# cp -r libavfilter/ /usr/local/ffmpeg/include/ffmpeg/
    -bash-4.2# cp -r libavcodec/ /usr/local/ffmpeg/include/ffmpeg/
    -bash-4.2# cp -r libavdevice/ /usr/local/ffmpeg/include/ffmpeg/

      将 /usr/local/ffmpeg/include 路径下 ffmpeg/ 目录复制到 /usr/include/:

    -bash-4.2# cp -r ffmpeg/ /usr/include/

       (4)PKG_CONFIG_PATH 变量设置

      ffmpeg 安装程序会在 /usr/local/ffmpeg/lib/pkgconfig 目录下提供 libavcodec.pc libswscale.pc 等5个.pc文件,分别对应安装的五个库文件。必须要让 pkg-config 能找到 ffmpeg 的 *.pc 文件,通过 PKG_CONFIG_PATH 来设置 pkg-config 来更新。

    -bash-4.2# cd /usr/local/ffmpeg/lib/pkgconfig/
    -bash-4.2# vim /etc/profile

      添加如下配置:

    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/ffmpeg/lib/pkgconfig
    export FFMPEG_HOME=/usr/local/ffmpeg
    export PATH=$PATH:$FFMPEG_HOME

      使配置立即生效:

    -bash-4.2# source /etc/profile

      (5)检查配置是否成功

      在命令行输入 ffmpeg 查看是否安装成功,若出现如下界面则安装成功:

    -bash-4.2# ffmpeg
    ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
      built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-16)
      configuration: --enable-shared --enable-swscale --enable-gpl --enable-nonfree --enable-pic --prefix=/usr/local/ffmpeg --enable-version3 --enable-postproc --enable-pthreads --enable-avisynth
      libavutil      56. 22.100 / 56. 22.100
      libavcodec     58. 35.100 / 58. 35.100
      libavformat    58. 20.100 / 58. 20.100
      libavdevice    58.  5.100 / 58.  5.100
      libavfilter     7. 40.101 /  7. 40.101
      libswscale      5.  3.100 /  5.  3.100
      libswresample   3.  3.100 /  3.  3.100
      libpostproc    55.  3.100 / 55.  3.100
    Hyper fast Audio and Video encoder
    usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
    
    Use -h to get full help or, even better, run 'man ffmpeg'

    附:ffmpeg configure 参数配置

      进入目录 /home/ffmpeg/ffmpeg-4.1 输入命令 ./configure --help 即可查看各个参数信息:

    Standard options: 基本选项参数
    --help                   显示此帮助信息|print this message
    --log[=FILE|yes|no]      记录测试并输出到config.err文件|log tests and output to FILE [config.err]
    --prefix=PREFIX          安装程序到指定目录(默认/usr/local)|install in PREFIX [/usr/local]
    --libdir=DIR             安装库到指定目录(默认prefix/lib)|install libs in DIR [PREFIX/lib]
    --shlibdir=DIR           指定共享库路径(默认prefix/lib)|install shared libs in DIR [PREFIX/lib]
    --incdir=DIR             指定includes路径(默认prefix/include/ffmpeg)|install includes in DIR[PREFIX/include/ffmpeg]
    --mandir=DIR             指定man page路径(默认prefix/man)install man page in DIR [PREFIX/man]
    --enable-mp3lame         启用mp3编码libmp3lame(默认关闭)enable MP3 encoding via libmp3lame[default=no]
    --enable-libogg          启用ogg支持libogg(默认关闭)enable Ogg support via libogg [default=no]
    --enable-vorbis          启用Vorbis支持libvorbis(默认关闭)enable Vorbis support via libvorbis [default=no]
    --enable-faad            启用faad支持libfaad(默认关闭)enable FAAD support via libfaad [default=no]
    --enable-faadbin         启用faad运行时链接支持(默认关闭)build FAAD support with runtime linking[default=no]
    --enable-faac            启用faac支持libfaac(默认关闭)enable FAAC support via libfaac [default=no]
    --enable-libgsm          启用GSM支持libgsm(默认关闭)enable GSM support via libgsm [default=no]
    --enable-xvid            启用xvid支持xvidcore(默认关闭)enable XviD support via xvidcore [default=no]
    --enable-libx264            启用H.264编码(默认关闭)enable H.264 encoding via x264 [default=no]
    --enable-mingw32         启用MinGW本地/交叉win环境编译|enable MinGW native/cross Windows compile
    --enable-mingwce         启用MinGW本地/交叉winCE环境编译enable MinGW native/cross WinCE compile
    --enable-a52             启用A52支持(默认关闭)enable GPLed A52 support [default=no]
    --enable-a52bin          启用运行时打开liba52.so.0(默认关闭)open liba52.so.0 at runtime [default=no]
    --enable-dts             启用DTS支持(默认关闭)enable GPLed DTS support [default=no]
    --enable-pp              启用后加工支持(默认关闭)enable GPLed postprocessing support [default=no]
    --enable-static          构建静态库(默认启用)build static libraries [default=yes]
    --disable-static         禁止构建静态库(默认关闭)do not build static libraries [default=no]
    --enable-shared          构建共享库(默认关闭)build shared libraries [default=no]
    --disable-shared         禁止构建共享库(默认启用)do not build shared libraries [default=yes]
    --enable-amr_nb          启用amr_nb float音频编解码器|enable amr_nb float audio codec
    --enable-amr_nb-fixed    启用fixed amr_nb codec | use fixed point for amr-nb codec
    --enable-amr_wb          启用amr_wb float音频编解码器|enable amr_wb float audio codec
    --enable-amr_if2         启用amr_wb IF2音频编解码器|enable amr_wb IF2 audio codec
    --enable-sunmlib         启用Sun medialib(默认关闭) | use Sun medialib [default=no]
    --enable-pthreads        启用pthreads(多线程)(默认关闭)use pthreads [default=no]
    --enable-dc1394          启用libdc1394、libraw1394抓取IIDC-1394(默认关闭)enable IIDC-1394 grabbing using libdc1394 and libraw1394 [default=no]
    --enable-swscaler        启用计数器支持?(默认关闭)software scaler support [default=no]
    --enable-avisynth        允许读取AVISynth脚本本件(默认关闭)allow reading AVISynth script files [default=no]
    --enable-gpl             允许使用GPL(默认关闭)allow use of GPL code, the resulting libav* and ffmpeg will be under GPL [default=no]
    Advanced options (experts only): 高级选项参数(供专业人员使用)
    --source-path=PATH       源码的路径(当前为/root/flv/ffmpeg)| path to source code [/root/flv/ffmpeg]
    --cross-prefix=PREFIX    为编译工具指定路径 | use PREFIX for compilation tools []
    --cross-compile          假定使用了交叉编译 | assume a cross-compiler is used
    --cc=CC                  指定使用何种C编译器(默认gcc)use C compiler CC [gcc]
    --make=MAKE              使用特定的make | use specified make [make]
    --extra-cflags=ECFLAGS   添加ECFLAGS到CFLAGS | add ECFLAGS to CFLAGS []
    --extra-ldflags=ELDFLAGS 添加ELDFLAGS到LDFLAGS(默认-Wl,--as-needed)| add ELDFLAGS to LDFLAGS [ -Wl,--as-needed]
    --extra-libs=ELIBS       添加ELIBS | add ELIBS []
    --build-suffix=SUFFIX    为专用程序添加后缀 | suffix for application specific build []
    --arch=ARCH              选择机器架构(默认x86)select architecture [x86]
    --cpu=CPU                选用最低的cpu(影响指令的选择,可以在老CPU上出错) | selects the minimum cpu required (affects instruction selection, may crash on older CPUs)
    --powerpc-perf-enable    启用PPC上面的性能报告(需要启用PMC)enable performance report on PPC
                               (requires enabling PMC)
    --disable-mmx            禁用MMX | disable MMX usage
    --disable-armv5te        禁用armv5te | disable armv5te usage
    --disable-iwmmxt         禁用iwmmxt | disable iwmmxt usage
    --disable-altivec        禁用AltiVec | disable AltiVec usage
    --disable-audio-oss      禁用OSS音频支持(默认启用)disable OSS audio support [default=no]
    --disable-audio-beos     禁用BeOS音频支持(默认启用)disable BeOS audio support [default=no]
    --disable-v4l            禁用video4linux提取(默认启用)disable video4linux grabbing [default=no]
    --disable-v4l2           禁用video4linux2提取(默认启用)disable video4linux2 grabbing [default=no]
    --disable-bktr           禁用bktr视频提取(默认启用)disable bktr video grabbing [default=no]
    --disable-dv1394         禁用DV1394提取(默认启用)disable DV1394 grabbing [default=no]
    --disable-network        禁用网络支持(默认支持)disable network support [default=no]
    --disable-ipv6           禁用ipv6支持(默认支持)disable ipv6 support [default=no]
    --disable-zlib           禁用zlib(默认支持)disable zlib [default=no]
    --disable-simple_idct    禁用simple IDCT例程(默认启用)disable simple IDCT routines [default=no]
    --disable-vhook          禁用video hooking支持 | disable video hooking support
    --enable-gprof           enable profiling with gprof [no]
    --disable-debug          禁用调试符号 | disable debugging symbols
    --disable-opts           禁用编译器最优化 | disable compiler optimizations
    --disable-mpegaudio-hp   启用更快的解码MPEG音频(但精确度较低)(默认禁用)faster (but less accurate) MPEG audio decoding [default=no]
    --disable-protocols      禁用 I/O 协议支持(默认启用)disable I/O protocols support [default=no]
    --disable-ffserver       禁用生成ffserver | disable ffserver build
    --disable-ffplay         禁用生成ffplay | disable ffplay build
    --enable-small           启用优化文件尺寸大小(牺牲速度)optimize for size instead of speed
    --enable-memalign-hack   启用模拟内存排列,由内存调试器干涉? | emulate memalign, interferes with memory debuggers
    --disable-strip          禁用剥离可执行程序和共享库 | disable stripping of executables and shared libraries
    --disable-encoder=NAME   禁用XX编码器 | disables encoder NAME
    --enable-encoder=NAME    启用XX编码器 | enables encoder NAME
    --disable-decoder=NAME   禁用XX解码器 | disables decoder NAME
    --enable-decoder=NAME    启用XX解码器 | enables decoder NAME
    --disable-encoders       禁用所有编码器 | disables all encoders
    --disable-decoders       禁用所有解码器 | disables all decoders
    --disable-muxer=NAME     禁用XX混音器 | disables muxer NAME
    --enable-muxer=NAME      启用XX混音器 | enables muxer NAME
    --disable-muxers         禁用所有混音器 | disables all muxers
    --disable-demuxer=NAME   禁用XX解轨器 | disables demuxer NAME
    --enable-demuxer=NAME    启用XX解轨器 | enables demuxer NAME
    --disable-demuxers       禁用所有解轨器 | disables all demuxers
    --enable-parser=NAME     启用XX剖析器 | enables parser NAME
    --disable-parser=NAME    禁用XX剖析器 | disables parser NAME
    --disable-parsers        禁用所有剖析器 | disables all parsers
  • 相关阅读:
    第五次作业
    第四次作业
    Java实验二
    java第一次作业
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
    第七次作业
    第六次作业
  • 原文地址:https://www.cnblogs.com/yjq520/p/10592958.html
Copyright © 2011-2022 走看看