Ubuntu下FFmpeg的安装(支持libfdk_acc)

操作系统:Ubuntu 16.04

安装

方法1:软件包安装

sudo apt update
sudo apt install ffmpeg

最初我用的是这种方法,因为比较简单,可以满足视频编码的需求。但是后来在对音频进行编码的时候,需要使用libfdk_aac这个音频编码库,这种方法就行不通了。为了满足需求,最终采用了下面这个方法:

方法2:源码安装
参考:

  • Linux 下ffmpeg的安装
  • Encode/AAC – FFmpeg
  • ffmpeg开启libfdk_aac跟libmp3lame
  • ubuntu ffmpeg编译(x264+fdk_aac+mp3lame)
  • ubuntu 14.10下安装带有libfdk-aac的ffmpeg

步骤:

  1. 安装Yasm
    下载网页:Download - The Yasm Modular Assembler Project
    源码链接:yasm-1.3.0.tar.gz
    安装命令:

    wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
    tar -zxvf yasm-1.3.0.tar.gz
    cd yasm-1.3.0/
    sudo ./configure
    sudo make
    sudo make install
    
  2. 安装fdk_aac
    下载网页:fdk-aac-2.0.1
    源码链接:fdk-aac-2.0.1.tar.gz
    安装命令:

    wget https://downloads.sourceforge.net/opencore-amr/fdk-aac-2.0.1.tar.gz
    tar -zxvf fdk-aac-2.0.1.tar.gz
    cd fdk-aac-2.0.1/
    sudo ./configure --prefix=/usr --disable-static
    sudo make
    sudo make install
    
  3. 安装ffmpeg
    下载网页:Download FFmpeg
    源码链接:ffmpeg-4.2.1.tar.bz2
    安装命令:

    wget https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2
    tar -jxvf ffmpeg-4.2.1.tar.bz2
    cd ffmpeg-4.2.1/
    sudo ./configure --enable-libfdk-aac --enable-nonfree
    sudo make
    sudo make install
    

    *注1:若提示WARNING: pkg-config not found, library detection may fail.,则需先安装pkg-config,参考:pkg-config 编译安装
    下载页面:Index of /releases
    源码链接:pkg-config-0.29.2.tar.gz

    wget https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
    tar -zxvf pkg-config-0.29.2.tar.gz
    cd pkg-config-0.29.2/
    sudo ./configure --with-internal-glib
    sudo make
    sudo make install
    

    *注2:必须要在配置fmpeg之前先装libfdk-aac,否则会报错:

    ERROR: libfdk_aac not found
    

    *注3:编译过程比较耗时间,可以考虑在make后加-j 4等选项实现多核编译以提高速度

    *注4:在Win10的Ubuntu子系统中安装成功,但在使用时遇到错误:

    Unknown encoder 'libx264'
    

    经过查询,发现是缺少x264库,参考:
    -解决Ubuntu16.04视频编码出现Unknown encoder 'libx264’问题
    -解决Ubuntu18.04视频编码出现Unknown encoder 'libx264’问题

    解决步骤:
    1.安装nasm(否则后面会报错),参考:ffmpeg开发环境的安装测试和更新的步骤

    wget http://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.xz
    xz nasm-2.13.03.tar.xz
    tar -xvf nasm-2.13.03.tar
    cd nasm-2.13.03/
    sudo ./configure  --prefix=/usr
    sudo make
    sudo make install
    

    2.安装x264库

    git clone http://git.videolan.org/git/x264.git
    cd x264/
    sudo ./configure --enable-shared --enable-static
    sudo make
    sudo make install
    

    3.重新编译ffmpeg

    sudo ./configure --enable-libfdk-aac --enable-nonfree --enable-gpl --enable-libx264
    sudo make -j 4
    sudo make install
    

    4.之后验证时,又遇报错:

    ffmpeg: error while loading shared libraries: libx264.so.159: cannot open shared object file: No such file or directory
    

    解决参考:./ffmpeg: error while…
    修改/etc/ld.so.conf,添加:

    /usr/local/x264/lib
    

    保存并退出后,执行:

    ldconfig
    

验证

ffmpeg -version

正常的话,会输出:
*软件包安装:

ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
libavutil      54. 31.100 / 54. 31.100
libavcodec     56. 60.100 / 56. 60.100
libavformat    56. 40.101 / 56. 40.101
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 40.101 /  5. 40.101
libavresample   2.  1.  0 /  2.  1.  0
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  2.101 /  1.  2.101
libpostproc    53.  3.100 / 53.  3.100

*源码安装:

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11) 20160609
configuration: --enable-libfdk-aac --enable-nonfree
libavutil      56. 31.100 / 56. 31.100
libavcodec     58. 54.100 / 58. 54.100
libavformat    58. 29.100 / 58. 29.100
libavdevice    58.  8.100 / 58.  8.100
libavfilter     7. 57.100 /  7. 57.100
libswscale      5.  5.100 /  5.  5.100
libswresample   3.  5.100 /  3.  5.100

命令格式(基础):

ffmpeg -i input_video output_video

常用选项

-c:v或-vcodec:视频编码器
-c:a或-acodec:音频编码器
-b:v:视频码率,单位为bit
-b:a:音频码率,单位为bit
-s:画面尺寸,即分辨率,如“1920x1080”
-r:帧率,即每秒有多少帧,单位为fps
-g:GOP大小,即关键帧(I帧)间隔
-vn:不处理视频
-an:不处理音频

安装ffmpeg的同时也安装了ffplay和ffrpobe,这里介绍一些关于ffrpobe的使用。

查看关键帧数量

ffprobe -show_frames input.mp4 | grep -c key_frame=1

查看GOP长度

ffprobe -show_frames input.mp4 | grep key_frame

从输出中,数关键帧(key_frame=1)之间有多少非关键帧(key_frame=0),即为GOP的帧数量

*FFmpeg的功能很强大,因此本文不包含具体使用FFmpeg的内容。可以参考一个H.264编码的例子:DSAH视频系统(服务器&播放器)搭建

你可能感兴趣的:(#,DASH,工具)