一、安装ffmpeg

环境:Docker Centos,进入容器

1.1官网下载 Index of /ffmpeg/release-source

先下载安装包:  wget https://johnvansickle.com/ffmpeg/release-source/ffmpeg-4.1.tar.xz 

建议在宿主机上下载安装包,因为docker中wget的命令都没有。下载并解压成功后,在复制到容器中,下面下载解压等操作在宿主机中执行.

在Linux下经常看到的压缩包为tar.gz的,然后习惯性去用tar命令去解压,今天突然看到个.tar.xz的,当用tar去解压的时候,顺理成章地报错了。。。在centos下可以直接yum install xz,安装完成后,通过xz来解压.xz文件,如xz -d (–decompress) xxx.tar.xz 利用xz解压后的文件为.tar文件,所以接着还需要通过tar来解压 总结一下,彻底解压.tar.xz需要两步:

xz -d ffmpeg-4.1.tar.xz   #先将.xz解压为.tar

tar -xf ffmpeg-4.1.tar   #在将.tar解压

docker cp ffmpeg-4.1 video:/mnt/    #将解压好的文件复制到容器中

1.2安装依赖

yum install -y gcc   

yum install -y yasm

错误1: 

 因为在2022年1月31日,CentOS团队终于从官方镜像中移除CentOS 8的所有包。 CentOS 8已于2021年12月31日寿终正寝,但软件包仍在官方镜像上保留了一段时间。现在他们被转移到https://vault.centos.org 解决方法​ 如果你仍然需要运行你的旧CentOS 8,你可以在/etc/yum.repos中更新repos.d使用vault.centos.org代替mirror.centos.org。参照:CentOS8解决“Failed to download metadata for repo ‘appstream‘”错误_培根芝士的博客-CSDN博客

cd /etc/yum.repos.d
vi CentOS-Linux-BaseOS.repo
vi CentOS-Linux-AppStream.repo

[baseos]
name=CentOS Linux $releasever - BaseOS
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
baseurl=https://vault.centos.org/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial


[appstream]
name=CentOS Linux $releasever - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
baseurl=https://vault.centos.org/centos/$releasever/AppStream/$basearch/os/ 
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

错误2:

  yum install -y epel-release   #产生这个错误的原因是未配置yum源,所以需要安装EPEL源

 发现还是不能安装yasm,那就手动安装吧(还是在宿主机上执行)

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz  #下载源码包

tar zxvf yasm-1.3.0.tar.gz #解压

docker cp yasm-1.3.0 video:/mnt/   # 复制到容器

cd yasm-1.3.0 #进入目录

./configure #配置

make && make install #编译安装 如果没有make 命令,可以 yum install -y make 安装

注意:如果涉及到推流或使用h264一定要安装请参照另外的h264安装,

容器安装 libx264_w13511069150的博客-CSDN博客

并且配置为 ./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-libx264

1.3安装ffmpeg

docker exec -it video bash   #进入容器

/mnt/ffmpeg-4.1   #进入cp进来的目录

./configure --enable-shared --prefix=/usr/local/ffmpeg    #配置

make && make install #编译安装 这个特别慢,需要多等会

vi /etc/ld.so.conf  # 修改文件  增加一行 /usr/local/ffmpeg/lib/  

ldconfig   #使修改生效

/usr/local/ffmpeg/bin/ffmpeg -version  #查看版本

如果:
开启了x264在查看版本时/usr/local/ffmpeg/bin/ffmpeg -version报如下错误

/usr/local/ffmpeg/bin/ffmpeg: error while loading shared libraries: libx264.so.164: cannot open shared object file: No such file or directory

解决:
vi /etc/ld.so.conf   #在最后面加入一行   /usr/local/lib/  
因为发现安装x264库之后,x264的库跑到这里了


vi /etc/profile   #增加环境变量  最后一行增加 如下内容

 PATH=$PATH:/usr/local/ffmpeg/bin

 export PATH  

source /etc/profile  #使配置生效

ffmpeg -version  #查看版本

问题:在容器实例中发现每次重启容器后,ffmpeg命令就不能用发,解决办法

vi ~/.bashrc  配置文件末尾添加 source /etc/profile,保存退出即可。这样就能够实现重启后自动刷新配置文件,而无需手动操作。但是容器跑的JAR文件没法使用ffmpeg命令,因为我是用.sh脚本启动挂载目录的方式,所以在启动.sh文件中也增加 source /etc/profile 就可以了。

 至此ffmpeg 已完装成功。可参照 CentOs7.5安装FFmpeg - wintercloud - 博客园

二、Srping Boot 整合

因为有项目的配置文件,所以项目就不放出来了,可以参照 SpringBoot整合FFmpeg进行视频分片上传(Linux)_upupup-999的博客-CSDN博客

Logo

更多推荐