FFmpeg编译安装

Posted breakpointlab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg编译安装相关的知识,希望对你有一定的参考价值。

ffmpeg源码编译安装


ffmpeg视频开发入门教程 - linux下ffmpeg源码编译安装

ffmpeg是视频开发最常用到的开源软件,FFmpeg功能强大,用途广泛,提供几乎所有你能够想到的与视频开发相关的操作,许多商业软件都以ffmpeg为基础进行开发定制。

技术图片

ffmpeg功能庞大,向开发者提供了丰富的函数库调用,常用的函数库包括:

  • libavcodec - 各种格式的音视频编解码
  • libavformat - 各种音视频封装格式的生成和解析,包括获取解码所需信息、读取音视频数据等功能
  • libswscale - 视频图像缩放的库,提供颜色空间转换、图像格式转换的功能
  • libavutil - 工具库,包括算数运算,字符操作等
  • libpostproc - 对视频做预处理的库
  • libpostproc - 滤镜功能库
  • libavdevice - 提供了访问捕获设备和回放设备的接口

此外,ffmpeg还向开发者提供了丰富的命令行工具,对于不熟悉FFmpeg的开发者来说,可以先通过这些命令行工具,对ffmpeg的基本功能有个大致的了解,下面我们就开始正式讨论。


1、ffmpeg安装

这里以Ubuntu 16LTS版为例介绍ffmpeg的安装。

添加PPA源

ffmpeg 4是目前最新的发行版本,如果要安装该版本,需要添加PPA源,执行以下命令添加PPA仓库到Ubuntu系统

sudo add-apt-repository ppa:jonathonf/ffmpeg-4

安装ffmpeg

通过以下命令安装ffmpeg

sudo apt-get update
sudo apt-get install ffmpeg

?可以看到x264等相关的动态库文件也会一同安装

sudo apt-get install ffmpeg
[sudo] password for ron: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libaom0 libavcodec58 libavdevice58 libavfilter7 libavformat58 libavresample4 libavutil56 libbs2b0 libchromaprint1 libcodec2-0.4
  libflite1 liblilv-0-0 libmysofa1 libnorm1 libopenjp2-7 libopenmpt0 libpgm-5.2-0 libpocketsphinx3 libpostproc55 librabbitmq4
  librubberband2v5 libserd-0-0 libsodium18 libsord-0-0 libsphinxbase3 libsratom-0-0 libsrt1-gnutls libswresample3 libswscale5
  libvdpau1 libvidstab1.1 libx264-155 libx265-192 libzmq5 mesa-vdpau-drivers vdpau-driver-all
Suggested packages:
  ffmpeg-doc serdi sordi libvdpau-va-gl1 nvidia-vdpau-driver nvidia-legacy-340xx-vdpau-driver
Recommended packages:
  pocketsphinx-hmm-en-hub4wsj | pocketsphinx-hmm-zh-tdt | pocketsphinx-hmm-en-tidigits pocketsphinx-lm-en-hub4
  | pocketsphinx-lm-zh-hans-gigatdt | pocketsphinx-lm-zh-hant-gigatdt
The following NEW packages will be installed:
  ffmpeg libaom0 libavcodec58 libavdevice58 libavfilter7 libavformat58 libavresample4 libavutil56 libbs2b0 libchromaprint1
  libcodec2-0.4 libflite1 liblilv-0-0 libmysofa1 libnorm1 libopenjp2-7 libopenmpt0 libpgm-5.2-0 libpocketsphinx3 libpostproc55
  librabbitmq4 librubberband2v5 libserd-0-0 libsodium18 libsord-0-0 libsphinxbase3 libsratom-0-0 libsrt1-gnutls libswresample3
  libswscale5 libvdpau1 libvidstab1.1 libx264-155 libx265-192 libzmq5 mesa-vdpau-drivers vdpau-driver-all
0 upgraded, 37 newly installed, 0 to remove and 233 not upgraded.
Need to get 29.2 MB of archives.
After this operation, 106 MB of additional disk space will be used.
Do you want to continue? [Y/n]

确认ffmpeg安装成功

ffmpeg安装完成后,可以通过ffmpeg -version命令打印FFmpeg的版本号,能够成功打印即可确认FFmpeg安装成功。

ffmpeg -version

2、ffmpeg编译

FFmpeg源码编译主要依赖x264yasm组件,在搜索引擎中可以非常容易到找到它们的源码,其中,x264提供对h.264编码器的支持,yasm用于对汇编优化的支持,若不需要汇编优化的支持,可在编译选项中关闭yasm即可(--disable-yasm)。

ffmpeg依赖库编译

在Ubuntu下可采用以下方式配置编译选项:

yasm configure配置

./configure --prefix=/usr/local/3rdparty/yasm

x264 configure配置

./configure --prefix=/usr/local/3rdparty/x264 --enable-shared --enable-static --enable-yasm

ffmpeg依赖库编译

ffmpeg configure配置

./configure --prefix=/usr/local/3rdparty/ffmpeg --enable-shared --enable-yasm --enable-libx264 --enable-gpl --enable-pthreads --extra-cflags=-I/usr/local/3rdparty/x264/include --extra-ldflags=-L/usr/local/3rdparty/x264/lib

编译完成后,在源码目录生成ffmpeg、ffserver、ffprobe等命令行工具,其中

  • ffmpeg - 命令行工具支持视频编解码、视频转码、视频格式转换、视频推流等功能
  • ffserver - 命令行工具与ffmpeg配合,负责响应客户端的流媒体请求,把流媒体数据发送给客户端
  • ffprobe - 命令行工具用来查看多媒体文件的描述信息

ffmpeg环境变量配置

在ffmpeg及其依赖环境编译完成后,还需要让系统能够找到对应的安装位置。打开/etc/profile配置文件,在该文件底部添加各组件的环境变量

# YASM
export PATH="$PATH:/usr/local/3rdparty/yasm/bin/"
export LD_LIBRARY_PATH=/usr/local/3rdparty/yasm/lib:$LD_LIBRARY_PATH

# X264
export PATH="$PATH:/usr/local/3rdparty/x264/bin/"
export LD_LIBRARY_PATH=/usr/local/3rdparty/x264/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/3rdparty/x264/lib/pkgconfig:$PKG_CONFIG_PATH

# FFMPEG
export PATH="$PATH:/usr/local/3rdparty/ffmpeg/bin/"
export LD_LIBRARY_PATH=/usr/local/3rdparty/ffmpeg/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/3rdparty/ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH

使用source /etc/profile命令刷新环境变量

source /etc/profile

使用ffmpeg -version命令打印版本号,这里采用的ffmpeg是3.2.4版本

ffmpeg -version
ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609
configuration: --prefix=/usr/local/3rdparty/ffmpeg --enable-shared --enable-yasm --enable-libx264 --enable-gpl --enable-pthreads --extra-cflags=-I/usr/local/3rdparty/x264/include --extra-ldflags=-L/usr/local/3rdparty/x264/lib
libavutil      55. 34.101 / 55. 34.101
libavcodec     57. 64.101 / 57. 64.101
libavformat    57. 56.101 / 57. 56.101
libavdevice    57.  1.100 / 57.  1.100
libavfilter     6. 65.100 /  6. 65.100
libswscale      4.  2.100 /  4.  2.100
libswresample   2.  3.100 /  2.  3.100
libpostproc    54.  1.100 / 54.  1.100

// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
// 公众号:断点实验室
// 扫描二维码,关注更多优质原创,内容包括:音视频开发、图像处理、网络、
// Linux,Windows、android、嵌入式开发等

技术图片



以上是关于FFmpeg编译安装的主要内容,如果未能解决你的问题,请参考以下文章

win10下使用msys+vs2019编译ffmpeg源码

win10下使用msys+vs2019编译ffmpeg源码

[环境配置][转载]ubuntu上源码编译ffmpeg

php代码片段: sendFile/videoStream/sendEmail/phpexcel/ffmpeg/zip

如何用vs08编译ffmpeg

centos编译ffmpeg x264