debian安装ffmpeg
2020-06-30 03:09:19    161    0    0
jeiry

参考

https://blog.csdn.net/qq_39436605/article/details/82755588


https://www.cnblogs.com/comexchan/p/12079333.html


下载ffmpeg
从ffmpeg官网:http://ffmpeg.org/download.html下载最新的ffmpeg安装包,然后通过如下命令解压:

tar jxf ffmpeg-2.5.3.tar.bz2

或者用Git从github下载

 

配置
 

本文进行一个比较简单的配置:

./configure --enable-shared --prefix=/usr/local/ffmpeg --disable-yasm

 

--prefix表示程序安装的目录,这里设为/usr/local/ffmpeg。

--enable-shared表示生成动态链接库,可以供以后编程使用,同时生成的可执行程序也依赖这些动态库。

--disable-yasm表示禁用yasm。

如果不禁用yasm 就会报错

 

错误的意思是 yasm/nasm 包不存在或者很旧,可以使用--disable-yasm禁用这个选项编译,yasm是一款汇编器,并且是完全重写了nasm的汇编环境,接收nasm和gas语法,支持x86和amd64指令集,所以这里安装一下yasm即可,下载地址是:http://yasm.tortall.net/Download.html 进入后下载1.3.0的源码包,执行下面命令安装:

tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install
编译参数都是默认的,直接安装到系统中即可,安装成功之后继续回到ffmpeg解压后的目录,执行下面命令编译并安装:

我是直接禁用nasm/yasm

./configure --enable-shared --prefix=/usr/local/ffmpeg --disable-yasm

make
make install
编译过程有点长,耐心等待完成之后执行 cd /monchickey/ffmpeg/ 进入安装目录,查看一下发现有bin,include,lib,share这4个目录,其中bin是ffmpeg主程序二进制目录,include是C/C++头文件目录,lib是编译好的库文件目录,share是文档目录,然后进入bin目录,执行 ./ffmpeg -version 查看当前版本的详细信息

默认情况下一般会报libavdevice.so.58: cannot open shared object file: No such file or directory

 

 

原因是lib目录未加载到链接到系统库中,系统ld目录列表在/etc/ld.so.conf中,打开文件会发现,里面引用了/etc/ld.so.conf.d/下面所有的.conf文件,比如mariadb-x86_64.conf我们只需要创建一个文件并写入lib路径即可,执行命令: vim /etc/ld.so.conf.d/ffmpeg.conf 然后添加一行内容: /usr/local/ffmpeg/lib 之后保存并退出,然后执行 ldconfig 使配置生效,现在再次执行 ./ffmpeg -version 显示就正常了

或者

ldd ffmpeg //来查看运行当前可执行文件需要哪些动态库

应该有很多人和我一样,不想编译FFMPEG之后还要动自己系统的环境,这时有一个简单的方法可以解决这个问题。就是在当前终端export一个环境变量。

 

 

然后在运行一遍就会发现静态库都有了。

首先由一个mp4格式的视频文件,大小是97M,现在使用ffmpeg转换为avi格式,执行下面命令:


 
  确认之后,看到屏幕滚动开始处理,大约半分钟之后视频就转换完毕了,转换后mp4视频大小是12M,具体可以下载下来看一下

 

 

现在ffmpeg安装和最简单的命令行视频转换就完成了,实际上ffmpeg命令行工具可以有很多参数不用编程就可以实现强大的功能,这个非常牛




问题现象:

执行ffmpeg命令后报错:

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

 出问题的环境信息为:

Fedora release 31 (Thirty One)
ffmpeg-4.2.1 官方源码编译

 看下需要哪些依赖:

ldd ffmpeg

可以看到缺失的依赖

我们找下这些文件在哪里

find /usr -name 'libavdevice.so.58'

应该都在这个目录

/usr/local/lib/

 我们export出来:

export LD_LIBRARY_PATH=/usr/local/lib/

然后再尝试执行

/usr/local/bin/ffmpeg

 

 问题解决

Pre: liunx获取硬盘温度

Next: docker下Gitlab如何进行备份恢复与迁移?

161
Table of content