linux 安装 ffmpeg 包括静态包和编译安装

这篇具有很好参考价值的文章主要介绍了linux 安装 ffmpeg 包括静态包和编译安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

linux 安装 ffmpeg

windows上安装,直接下载压缩包解压。linux安装,找了半天各种技术文章,说最好编译安装,按照步骤安装编译环境编译成功了,但是使用的时候总要安装各种外部库,转码转不了等等问题......

最后无奈,卸载掉ffmpeg,去官网下载编译好的程序,尝试了一下。效果满意。所以建议0基础底子薄的,和我一样不要编译安装了。

切记,去官网下载最新版本ffmpeg。避免踩坑!

ffmpeg的卸载

如果知道编译安装的位置,直接删除文件夹即可;

不知道位置,采用以下方式重新编译安装:https://www.linuxidc.com/Linux/2019-03/157703.htm

最后,删除/usr/local/bin/ffmpeg执行程序,你的可能不在这个地方,可以自己查看具体位置,whereis ffmpeg

首先说一下静态安装包 安装方法  此方法适合小白  

1. 下载
打开官网地址,进入下载页:Download FFmpeg

linux安装ffmpeg,ffmpeg,linux,运维

 选择Linux Static Builds下的构建选项,进入详情页

linux安装ffmpeg,ffmpeg,linux,运维

在列表中选择适合自己的版本,鼠标右键,复制链接地址。这里我选择了release5.1.1最新版本 ffmpeg-release-amd64-static.tar.xz。

打开Linux中要安装ffmpeg的目录,使用wget命令下载文件:

wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-release-amd64-static.tar.xz

2. 解压

下载完成后,如图:

可以看到下载完成的文件后缀名为 .tar.xz ,执行对应解压命令解压文件:

xz -d ffmpeg-release-amd64-static.tar.xz

经过一次解压,.xz 后缀名已经被去掉。接下来执行:

tar -xvf ffmpeg-release-amd64-static.tar

解压完成后进入解压出来的这个目录 ffmpeg-5.1.1-amd64-static

ffmpeg 和 ffprobe 都在这里。

3. 运行
接下来执行下命令试试:

./ffmpeg

安装成功,接下来可以随意做媒体处理啦,是不是 so easy!

备注
当然,如果想要ffmpeg命令全局可用,可以在bin目录加个链接。比如,分别执行如下命令,即可在/usr/bin目录下创建ffmpeg和ffprobe软链接。

cd /usr/bin
ln -s /data/software/ffmpeg-5.1.1-amd64-static/ffmpeg ffmpeg
ln -s /data/software/ffmpeg-5.1.1-amd64-static/ffprobe ffprobe

这样在其他目录也都可以直接使用 ffmpeg 和 ffprobe 而不用加目录前缀了。

在命令行输入ffmpeg 如下  就说明正常了 

linux安装ffmpeg,ffmpeg,linux,运维


下面来介绍一下 编译的安装方法

(如果不想看罗里吧嗦一大顿有用的话,可以跳到文章末尾直接拿写好的脚本用。。)

源码安装与二进制安装最大的不同是,你可以得到ffmpeg的libav*的一系列库。如何你需要基于这些库做开发,那么基本上你只能源码安装。另外,假如你需要对ffmpeg的源码或者它依赖的第三方库的源码做定制化修改,那也需要源码安装。

我的环境是一台阿里云的云主机,系统是CentOS 6.5,linux内核版本是2.6.32,gcc版本是4.4.7 20120313 (Red Hat 4.4.7-23)

上 Download FFmpeg 这个网页找到最新稳定版本的ffmpeg源码下载:

$wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2
$tar xvf ffmpeg-4.2.2.tar.bz2
$cd ffmpeg-4.2.2
$./configure

报错:

nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
...

 

yasm可以理解为是一个针对汇编做优化的库,所以我们选择先安装yasm而不是简单粗暴的使用--disable-x86asm禁用它。

上 Index of /projects/yasm/releases/ 这个网页找yasm的源码下载:

$wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
$tar xvf yasm-1.3.0.tar.gz
$cd yasm-1.3.0/
$./configure
$make
$make install

 

成功之后,再回到ffmpeg的源码目录:

$cd ffmpeg-4.2.2
$./configure
$make

 

编译完后试试运行ffmpeg:

$./ffmpeg

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23)
  configuration:
  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
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

 

但是需要注意的是,我们这样编译出来的ffmpeg,缺少很多编解码器,比如说h264。

这意味着,你用ffmpeg把一个h264编码的mp4文件转换成flv文件,不改动里面的编码数据,这是ok的,因为只是外层封装格式的转换,但是如果涉及到h264的编码和解码,可能就瞎了。这里例子就不上了。

那怎么添加需要的库呢,其实也很简单,基本就是两步,先源码安装好需要的编解码库,然后再在编译ffmpeg执行./configure那一步时将库加上。

configure所有的参数说明可以通过./configure -h查看。

我们回头看本文方式一中,直接运行下载得到的二进制ffmpeg,其中有一行信息:

configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg

这个就是这个ffmpeg当时./configure的参数。可以看到里面包含了x264的库--enable-libx264

下面我们演示如何编译包含x264的ffmpeg。

首先,编译x264:

$wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
$tar xvf x264-master.tar.bz2
$cd x264-master/
$./configure

 

报错:

Found no assembler
Minimum version is nasm-2.13
If you really want to compile without asm, configure with --disable-asm.

 

安装nasm:

$wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
$tar xvf nasm-2.14.02.tar.gz
$cd nasm-2.14.02/
$./configure
$make
$make install

 

成功后,返回x264目录,继续编译:

$cd x264-master/
$./configure
$make
# 这里需要注意,默认的make install只会安装x264可执行文件,并不会安装静态库,
# 所以我们使用install-lib-static
$make install-lib-static

 

回到ffmpeg源码目录,重新编译一个ffmpeg,这次我们把debug禁用掉,把x264包含上,显式指定编译静态库(不写的话默认也是静态库)

$./configure --disable-debug --enable-static --enable-libx264

 

报错:

libx264 is gpl and --enable-gpl is not specified.

 

继续:

$./configure --disable-debug --enable-static --enable-libx264 --enable-gpl

 

报错:

ERROR: libx264 not found

 

打开ffbuild/config.log文件查看错误信息:

/usr/local/lib/libx264.a(opencl-8.o): In function `x264_8_opencl_close_library':
opencl.c:(.text+0x5dd): undefined reference to `dlclose'
/usr/local/lib/libx264.a(opencl-8.o): In function `x264_8_opencl_load_library':
opencl.c:(.text+0x62f): undefined reference to `dlopen'
opencl.c:(.text+0x648): undefined reference to `dlsym'
opencl.c:(.text+0x662): undefined reference to `dlsym'
opencl.c:(.text+0x67c): undefined reference to `dlsym'
opencl.c:(.text+0x696): undefined reference to `dlsym'
opencl.c:(.text+0x6b0): undefined reference to `dlsym'
/usr/local/lib/libx264.a(opencl-8.o):opencl.c:(.text+0x6ca): more undefined references to `dlsym' follow
/usr/local/lib/libx264.a(opencl-8.o): In function `x264_8_opencl_load_library':
opencl.c:(.text+0x934): undefined reference to `dlclose'
/usr/local/lib/libx264.a(opencl-8.o): In function `x264_8_opencl_lookahead_init':
opencl.c:(.text+0x170c): undefined reference to `dlopen'
opencl.c:(.text+0x1727): undefined reference to `dlsym'
opencl.c:(.text+0x173b): undefined reference to `dlsym'
opencl.c:(.text+0x1752): undefined reference to `dlsym'
opencl.c:(.text+0x1766): undefined reference to `dlsym'
opencl.c:(.text+0x179c): undefined reference to `dlclose'
collect2: ld returned 1 exit status

 

把dl库加上:

$./configure --disable-debug --enable-static --enable-libx264 --enable-gpl --extra-libs=-ldl
$make
$./ffmpeg

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23)
  configuration: --disable-debug --enable-libx264 --enable-gpl --extra-libs=-ldl
  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
  libpostproc    55.  5.100 / 55.  5.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'

 

说明安装成功了。

最后,提供一个我日后持续在本文维护的安装脚本。

#!/usr/bin/env bash
# 源码编译ffmpeg静态库以及可执行文件
# 需要root权限
# 本脚本的最新版本请访问  https://pengrl.com/p/20029/

set -x

# 编译yasm,ffmpeg依赖的汇编优化的库
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install
cd -

# 编译nasm,x264依赖的汇编优化的库
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
tar xvf nasm-2.14.02.tar.gz
cd nasm-2.14.02/
./configure
make
make install
cd -

# 编译x264
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar xvf x264-master.tar.bz2
cd x264-master/
./configure
make
make install-lib-static
cd -

# 编译ffmpeg
wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2
tar xvf ffmpeg-4.2.2.tar.bz2
cd ffmpeg-4.2.2
./configure --disable-debug --enable-static --enable-libx264 --enable-gpl --extra-libs=-ldl
make
make install
./ffmpeg

  文章来源地址https://www.toymoban.com/news/detail-759215.html

到了这里,关于linux 安装 ffmpeg 包括静态包和编译安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ffmpeg源码编译成功,但是引用生成的静态库(.a)报错,报错位置在xxx_list.c,报错信息为某变量未定义

            背景:本文是对上一个文章的补充,在源码编译之前,项目是有完整的ffmpeg编译脚本的,只不过新增了断点调试ffmpeg,所以产生的上面的文章,也就是说,我在用make编译成功后,再去做的源码编译。后来我修改了脚本,然后源码编译成功,但是引用的时候报错了。报

    2024年02月13日
    浏览(42)
  • Centos7编译安装ffmpeg

    1、准备工作,安装必要的环境 2、创建目录         ffmpeg_sources 目录是下载软件包的目录         ffmpeg 目录是安装目录 3、安装ffmpeg 3.1、安装 nasm 3.2 安装 yasm 3.3、安装 libx264 3.4、安装 libx265 3.5、安装 fdk-aac 3.6、安装 libmp3lame 3.7 安装 libopus 3.8 安装 libogg 3.9 安装 libvorbi

    2024年02月12日
    浏览(47)
  • Windows下FFmpeg库编译安装指南

            之前在学习FFmpeg时,都是网上零零散散的知识点拼凑起来,没有经过系统地学习,最近时间比较多,于是决定开始深入学习FFmpeg,从自己动手编译源码开始。 本文记录了在自己编译过程中踩的坑,以及完整的编译安装流程, 建议先看踩过的坑里面最后一条 目录 环境

    2024年02月13日
    浏览(41)
  • Ubuntu18.04安装编译ffmpeg库

    Download FFmpeg 在cd到ffmpeg的文件夹下,执行以下命令,配置安装路径: 安装: 修改 /etc/profile文件: 最后一行添加路径: 保存后source: 修改 /etc/ld.so.conf: 添加: 执行:

    2024年02月11日
    浏览(44)
  • Centos7安装编译ffmpeg到指定目录

    1、官网下载tar包 2、解压usr/local目录 3、编译准备 4、安装设置 5、编译安装 6、修改文件/etc/ld.so.conf 输入  ldconfig  使修改生效 7、查看ffmpeg版本 8、配置系统变量 打开配置文件 vi /etc/profile 在export PATH之后添加: 1、下载静态安装包  John Van Sickle - FFmpeg Static Builds 安装到:/u

    2024年02月12日
    浏览(60)
  • 支持 flv+h265 的ffmpeg编译安装

    ffmpeg 官方分支没有支持flv+h265,国内金山云发了补丁版本,地址: 1. h264 2. h265 更多操作可参考:https://blog.csdn.net/xundh/article/details/100760114 3. 编译ffmpeg 如果不成功,可以尝试在最后添加: --pkg-config=\\\"pkg-config --static\\\" 4. 截屏命令示例 1. x264_bit_depth 未定义 原因:应该是x264的x26

    2023年04月12日
    浏览(46)
  • CentOS 8 非编译方式 yum 安装 FFmpeg

    FFmpeg 是一套免费的开源计算机程序,它提供了录制、转换以及流化音视频的完整解决方案。FFmpeg 在 Linux 平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括 Windows、Mac OS X 等。大多数文章都是说的ubuntu上如何安装,这里说一下centos8下面如何安装。 为在 Cent

    2024年02月13日
    浏览(45)
  • 02.FFMPEG的安装和添加硬件加速自编译

    说一个极其郁闷的事情,就在昨天收到3399的一块板子后,往电脑上面一插,然后悲剧的事情就发生了,我的电脑蓝屏重启了,这下好了,我写到一半的帖子也不见了,我的SSH里面的记录全部消失了,最关键的是SSH还没有退出,所以查询bash_history都查询不到,无语泪凝咽。所以

    2024年02月12日
    浏览(51)
  • Linux 下编译和交叉编译FFmpeg、OpenCV(contrib )库

    目录 一、Linux下FFmpeg库的编译 1.1 yasm库 1.2 安装X264 1.3 安装FFmepg 1.4 实验 报错 二、Linux 下OpenCV库的编译 三、环境变量设置 四、FFmpeg Linux交叉编译 4.1 FFmpeg不依赖其他库编译 4.2 FFmpeg编译依赖库(如X264) 以上3部分验证过得,是正确的,第四步没验证 五、OpenCV的交叉编译 hkx@ubun

    2024年01月22日
    浏览(71)
  • FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库

    ​ 《FFmpeg开发实战:从零基础到短视频上线》一书的例程主要测试本地的音视频文件,当然为了安全起见,很多网络视频都采用了https地址。FFmpeg若要访问https视频,就必须集成第三方的openssl库,但编译FFmpeg时却默认关闭了openssl。为了让App能够播放采用https的在线视频,需要

    2024年04月22日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包