红帽Linux安装ffmpeg

学习opencv为什么安装ffmpeg

  如果需要视频处理和摄像头方面的支持,则需要安装ffmpeg,如果只是用opencv对静态图像进行处理,则可以不安装ffmpeg。
  注意:opencv 3.1 调用了 ffmpeg 低版本的接口,所以如果是 opencv 中需要识别 ffmpeg,则应安装低版本的 ffmpeg,如 ffmpeg-2.2.16.tar.bz2 版本。

1. 安装 yasm

  ffmpeg编译中为了提高编译速度,使用了汇编指令,于是需要使用 yasm 这个工具。
  当然,如果实在不想要这个功能,可以在下一步的配置中使用./configure –disable-yasm选项。

(1)下载

  http://yasm.tortall.net/Download.html

(2)安装
[root@localhost opencv]# tar zxvf yasm-1.3.0.tar.gz
[root@localhost yasm-1.3.0]# ./configure
[root@localhost yasm-1.3.0]# make && make install

2. 下载 ffmpeg 安装包

  http://ffmpeg.org/download.html#build-linux
  因为通过添加yum源方式下载的rpm包版本较低,故使用 到官网自行下载最新版rpm包的方式安装。

3. 解压 ffmpeg 安装包

[root@localhost opencv]# tar -jxvf ffmpeg-3.2.4.tar.bz2 

4. ffmpeg 配置必要选项

  这一步根据自己需要开启或关闭某些选项,具体可以使用./configure –help查看,或者直接查看configure文件。本文使用如下简单配置。

[root@localhost opencv]# cd ffmpeg-3.2.4
[root@localhost ffmpeg-3.2.4]# ./configure --enable-shared --enable-swscale --enable-gpl --enable-nonfree --enable-pic --prefix=/usr/local/ffmpeg  --enable-version3 --enable-postproc --enable-pthreads --enable-x11grab --enable-avisynth

  –enable-shared 表示生成动态链接库,可以供以后编程使用,同时生成的可执行程序也依赖这些动态库。如果不加上 –enable-shared 选项则使用静态链接的方式编译,此时不会生成动态库,同时生成的ffmpeg等的可执行文件也比较大,但他们不需要动态库就可以直接运行。
  –prefix 表示程序安装的目录,这里设为/usr/local/ffmpeg。
  opencv会使用到libswscale,所以要在编译的时候把swscale这个库也编译出来;而libswscale是遵守gpl的,不enable gpl的话就无法编译。

5. 编译安装

  编译,需要较长时间,10分钟左右:

[root@localhost ffmpeg-3.2.4]# make

  安装,很快完成:

[root@localhost ffmpeg-3.2.4]# make install

6. 路径处理

[root@localhost ffmpeg-3.2.4]# cd /usr/local/ffmpeg/
[root@localhost ffmpeg]# ls
bin  include  lib  share

  安装完成后在/usr/local/ffmpeg出现三个目录:
   ● bin:可执行文件目录
   ● lib:动态链接库目录
   ● include:编程用到的头文件目录

(1)添加动态库路径

  不管是编程还是可执行程序的执行都需要依赖lib下面的动态库,可以把里面的so文件拷贝到/usr/lib下,但可以直接修改配置文件。
  通过查看/etc/ld.so.conf文件,发现里面只有一句话:

include ld.so.conf.d/*.conf

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

[root@localhost ld.so.conf.d]# pwd
/etc/ld.so.conf.d
[root@localhost ld.so.conf.d]# vim ffmpeg.conf

  添加:

/usr/local/ffmpeg/lib

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

[root@localhost ld.so.conf.d]# ldconfig -v
(2)创建软链接

  为了在任何地方能够直接用ffmpeg运行,而不用使用如./ffmpeg或者 /usr/local/ffmpeg/bin/ffmpeg的方式运行程序,可以把可执行程序复制到bin目录下,这里选择在bin目录下创建软链接。软链接类似于Windows下的快捷方式,如果原可执行程序被删除了,软链接也不能继续使用,而硬链接则可以继续使用。创建软连接如下:

[root@localhost ld.so.conf.d]# ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/
[root@localhost ld.so.conf.d]# ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/
[root@localhost ld.so.conf.d]# ln -s /usr/local/ffmpeg/bin/ffserver /usr/local/bin/

  bin目录中可执行文件使用指南:
    http://blog.csdn.net/stone_wzf/article/details/45378759
    http://blog.csdn.net/oldmtn/article/details/20830301
    http://www.cnblogs.com/tianma3798/p/6285550.html

(3)头文件拷贝到 /usr/include/

  /usr/local/ffmpeg/include 路径下会有如下目录:

[root@localhost include]# ls
libavcodec   libavfilter  libavutil    libswresample
libavdevice  libavformat  libpostproc  libswscale
[root@localhost include]# pwd
/usr/local/ffmpeg/include

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

[root@localhost include]# mkdir ffmpeg

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

[root@localhost include]# pwd
/usr/local/ffmpeg/include
[root@localhost include]# cp -r ffmpeg/ /usr/include/

  这么做是因为opencv编译的时候会去寻找ffmpeg/avcodec.h和ffmpeg/swscale.h等一些文件,ffmpeg以前的做法是把所有的头文件都放在ffmepg目录下面,但是现在新的版本已经改成放置到不同目录下,(如果不做这一步的话,在configure配置opencv的时候就会提示没有找到ffmpeg,同时编译opencv的时候需要更改 opencv下的一个cpp文件(忘了名字了,编译的时候出来的),那里面是ffmepg/avcodec.h ffmpeg/avformat.h ffmpeg/swscale.h,然后分别改正到正确的头文件所在就可以了)。

7. PKG_CONFIG_PATH 变量设置

  ffmpeg 安装程序会在 /usr/local/ffmpeg/lib/pkgconfig 目录下提供 libavcodec.pc libswscale.pc 等5个.pc文件,分别对应安装的五个库文件。

[root@localhost pkgconfig]# pwd
/usr/local/ffmpeg/lib/pkgconfig
[root@localhost pkgconfig]# ls
libavcodec.pc   libavfilter.pc  libavutil.pc    libswresample.pc
libavdevice.pc  libavformat.pc  libpostproc.pc  libswscale.pc

  必须要让pkg-config能找到ffmpeg的*.pc文件,通过PKG_CONFIG_PATH 来设置pkg-config来更新:

[root@localhost pkgconfig]# 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</span>:<span class="hljs-variable">$FFMPEG_HOME

  使配置立即生效:

[root@localhost pkgconfig]# source /etc/profile

8. 测试

[root@localhost include]# ffmpeg
ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developersbuilt with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)configuration: --enable-shared --prefix=/usr/local/ffmpeglibavutil      55. 34.101 / 55. 34.101libavcodec     57. 64.101 / 57. 64.101libavformat    57. 56.101 / 57. 56.101libavdevice    57.  1.100 / 57.  1.100libavfilter     6. 65.100 /  6. 65.100libswscale      4.  2.100 /  4.  2.100libswresample   2.  3.100 /  2.  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'

备注:configure参数说明

ffmpeg ./configure参数说明
root@web ffmpeg]# ./configure --help
Usage: configure [options]
Options: [defaults in brackets after descriptions]
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

参考:

http://www.2cto.com/os/201603/494063.html
http://blog.csdn.net/u012793120/article/details/51494828
http://blog.sina.com.cn/s/blog_684f1c2701016ib8.html
http://blog.csdn.net/aoshilang2249/article/details/48736369
http://www.opencv.org.cn/forum.php?mod=viewthread&tid=81
http://www.centoscn.com/image-text/install/2015/0523/5512.html
http://blog.csdn.net/henry121212/article/details/43489067
http://blog.csdn.net/david_xtd/article/details/8645306
https://my.oschina.net/zhangjie830621/blog/469909
http://www.cnblogs.com/wanghetao/p/3386311.html
http://www.cnblogs.com/lidabo/p/3987378.html
http://blog.csdn.net/sbdx/article/details/46670401
http://www.cnblogs.com/azraelly/archive/2012/12/31/2840541.html

原文出处:
http://blog.csdn.net/yangdiao127/article/details/64134508

红帽Linux安装ffmpeg相关推荐

  1. linux安装FFMPEG库

    文章目录 一.使用wget下载ffmpeg4.4安装包 二.解压 三.进入解压后生成的ffmpeg-4.4文件夹 四.运行configure文件 五.编译 六.安装 七.检查是否安装成功 八.如何编译 ...

  2. Linux 安装 FFmpeg

    FFmpeg官网:http://www.ffmpeg.org 官网介绍 FFmpeg is the leading multimedia framework, able to decode, enco ...

  3. 红帽linux安装图文教程详解,红帽linux安装图文教程详解

    大家都知道目前在商业服务器操作系统端,linux操作系统占的比例非常大,除了linux操作系统外,还有另外的两个操作系统,一个是uinx,一个是windows操作系统,但是如果自己要想自己在网络安全系 ...

  4. linux安装ffmpeg版本太多,linux 下载及安装ffmpeg

    java项目在压缩视频的时候使用了ffmpeg.exe,在windows系统下可以使用,发布到linux后无法直接调用ffmpeg.exe文件,需要在linux系统下安装ffmpeg.现总结如下: 1 ...

  5. ubuntu18.04/linux安装ffmpeg 遇到的错误

    首先我发现我的系统里没有ffmpeg 然后就在网上搜,按照以下这个网页进行安装: Ubuntu安装FFMPEG及简单使⽤ 用来这三个命令: sudo add-apt-repository ppa:ki ...

  6. 红帽linux安装注意事项

    一.linux为什么装在虚拟机上而不直接在电脑上呢? 因为虚拟机可还原,不影响电脑本身: 笔记本一般只有一个网卡: 二.步骤: 点击创建虚拟机→选择稍后安装系统→操作系统:linux→版本:红帽7 6 ...

  7. linux安装ffmpeg

    1.下载解压 wget http://www.ffmpeg.org/releases/ffmpeg-3.1.tar.gz tar -zxvf ffmpeg-3.1.tar.gz 2. 进入解压后目录, ...

  8. vnc 红帽linux安装教程,Linux(redhat\centos)下安装xrdp

    标签: Linux下安装xrdp 使用rdp协议访问远程Linux桌面 一般情况下,如果需要登陆远程Linux系统,我们会使用ssh/telnet来完成,如果需要登陆到远程Linux系统的桌面环境,我 ...

  9. linux安装ffmpeg版本太多,Linux安装FFmpeg的方法

    FFmpeg是一款优秀的播放器解码插件,可以跨平台,有不同平台的版本,对于解码,编码和录制以及转换作用的很多的软件都是使用FFmpeg的插件来实现的. FFmpeg:https://www.ffmpe ...

最新文章

  1. docker启动失败,报docker dead but pid file exists,处理方式
  2. 关于HTML使用ComDlg ActiveX 无法弹出相应对话框的问题1
  3. PDF 补丁丁 (修改PDF书签;拆分、合并、制作PDF;提取图片) 0.3.0.8 正式版
  4. 四叶草社交平台——十天冲刺(10)
  5. TensorFlow学习笔记:使用Inception v3进行图像分类
  6. iphone双卡_满屏的iPhone12评测来了,看哪个不重要,买哪个才重要|iphone|国行|iphone12...
  7. 我的网页设计(腾讯网页面制作编写)
  8. 一个WIFI热点的脚本思路,顺记shell知识
  9. 小米Android系统限制联网,Android 7 以上版本,绕过CA限制,抓取https
  10. Spring源码总结与分析
  11. php面向对象精要(3)
  12. c# itextsharp根据模板导出pdf报表
  13. 玩转华为ENSP模拟器系列 | 配置TWAMP统计业务示例
  14. c语言延时函数nop,延时函数怎么写delay
  15. html 下拉框 value值,HTML Select value用法及代码示例
  16. replay attacker
  17. HTML中禁止自动完成和禁用输入法
  18. 上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。不笑不足以为道。...
  19. UVA, 10286 Trouble with a Pentagon
  20. 嵌入式笔记-背光控制驱动

热门文章

  1. OptiTrack---Motive简单使用导出groundtruth
  2. CVE-2019-19781 Citrix ADCNetScaler远程命令执行漏洞
  3. Garmin社招 -- 面试总结复盘
  4. win7锁定计算机捷径,win7旗舰版系统中搜索电脑文件的捷径
  5. java判断字母是否为元音_Java程序查找给定字符是元音还是辅音
  6. 智慧城市----物联网
  7. linux与windows双系统启动引导
  8. Spark转换算子和执行算子
  9. [ vulhub漏洞复现篇 ] ECShop 4.x collection_list SQL注入
  10. e01文件转vdmk_[转载]虚惊一场,vmdk类型由虚拟磁盘变成文件!