centos7 docker容器安装最小镜像的ffmpeg 3.3.9版本(版本随意 方法一样)

 

  • ffmpeg是一个命令行工具箱,用于操作,转换和流式传输多媒体内容。
  • ffplay是一个简约的多媒体播放器。
  • ffprobe是一个简单的分析工具,用于检查多媒体内容。
  • 其他小工具,如 、 和 。aviocatismindexqt-faststart

GitHub - FFmpeg/FFmpeg: Mirror of https://git.ffmpeg.org/ffmpeg.git

 

 

ffmpeg包依赖链接: https://pan.baidu.com/s/10zEuWGVavDZQd46q3yZ4Pg 提取码: je9i 

 

 

网上找一堆 没一个好使的。 yml安装 版本太低 

版本高的又没自己想要的模块。 比如aac啥的

可能我这个ffmpeg 没有你想要的模块。 原理一样  。 

 

 

过程:  (不想看过程 可以直接往下拉 看结果

1.用原生安装ffmpeg  把需要的模块全装上。要什么模块 这就得自己找了(不提供这个 但上面包已经包含了这些)

cd $INSTALL_HOME
tar -xzvf  lame-3.99.5.tar.gz 
cd  lame-3.99.5
./configure --enable-shared --prefix=/usr 
make && make install 

cd $INSTALL_HOME
tar -xzvf  libogg-1.3.2.tar.gz 
cd  libogg-1.3.2
yum -y install gcc-c++
./configure  --prefix=/usr 
make && make install 

cd $INSTALL_HOME
tar -xzvf  libvorbis-1.3.5.tar.gz 
cd  libvorbis-1.3.5 &&
./configure  --prefix=/usr 
make && make install 


cd $INSTALL_HOME
tar -xzvf   xvidcore_1.3.3.orig.tar.gz 
cd   xvidcore-1.3.3/build/generic 
./configure  --prefix=/usr 
make && make install

cd $INSTALL_HOME
tar xvJf nasm-2.13.03.tar.xz
cd nasm-2.13.03
sed -e '/seg_init/d' -e 's/pure_func seg_alloc/seg_alloc/' -i include/nasmlib.h
./configure --prefix=/usr 
make &&make install 

cd $INSTALL_HOME
tar -zxvf  x264-20190306.tar.gz
cd  x264
./configure --prefix=/usr --enable-shared
make && make install 

cd $INSTALL_HOME
tar -xjvf libdca-0.0.5.tar.bz2 
cd   libdca-0.0.5
./configure  --prefix=/usr 
make && make install 



cd $INSTALL_HOME
tar -zxvf fdk-aac.tar.gz 
cd fdk-aac-0.1.3
./configure --prefix=/usr --enable-shared 
make && make install 



echo  "/usr/lib"  >>/etc/ld.so.conf
ldconfig

 
cd ffmpeg
./configure --prefix=/usr/local/ffmpeg   --enable-gpl --enable-shared --enable-libmp3lame  --enable-libfdk-aac --enable-nonfree  --enable-libvorbis    --enable-libxvid --enable-libx264  --enable-pthreads  --disable-yasm --disable-ffserver --disable-ffplay
make && make install
 

 

2.上面编译好了后。 把编译好的文件 拷贝出来 使用。  测试过程

2.1启动一个容器

docker run -d centos:7 bash -c "sleep 60000"

2.2 进入容器   将上面编译好的ffmpeg文件拷贝至上面创建出来的容器中

docker cp ffmpeg 2d2bdff2f305:/tmp/ffmpeg
docker exec -it 2d2bdff2f305 bash

2.3 执行上面拷贝进去的ffmpeg   会提示缺少什么依赖

[root@2d2bdff2f305 /]# /tmp/test/ffmpeg/bin/ffmpeg
/tmp/test/ffmpeg/bin/ffmpeg: error while loading shared libraries: libogg.so.0: cannot open shared object file: No such file or directory

2.4  宿主机有安装这个依赖 ,所以在宿主机查找 .。并拷贝至容器

[root@2d2bdff2f305 /]# eixt                                        #退出 容器。

[root@dgx /]# mkdir test && cd test                               #创建一个目录(用于存放这些缺少的依赖)    

[root@dgx test]# find / -name libogg.so.0

/usr/lib64/libogg.so.0
/usr/lib/libogg.so.0

[root@dgx test]# ls -l /usr/lib64/libogg.so.0                          #确定下是否软连接 拷贝软连接无效.软连接名字不一样 要改名

[root@dgx test]#  cp  /usr/lib64/libogg.so.0   ./ 

[root@dgx test]#   docker cp ./libogg.so.0  2d2bdff2f305:/lib64/  && docker exec -it 2d2bdff2f305  bash      #拷贝到容器 进入容器

2.5 继续执行。 少依赖 就宿主机找 流程和上一步一样。 

[root@2d2bdff2f305 /]# /tmp/test/ffmpeg/bin/ffmpeg
ffmpeg version 3.3.9 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-39)
  configuration: --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-libmp3lame --enable-libfdk-aac --enable-nonfree --enable-libvorbis --enable-libxvid --enable-libx264 --enable-pthreads --disable-yasm --disable-ffserver --disable-ffplay
  libavutil      55. 58.100 / 55. 58.100
  libavcodec     57. 89.100 / 57. 89.100
  libavformat    57. 71.100 / 57. 71.100
  libavdevice    57.  6.100 / 57.  6.100
  libavfilter     6. 82.100 /  6. 82.100
  libswscale      4.  6.100 /  4.  6.100
  libswresample   2.  7.100 /  2.  7.100
  libpostproc    54.  5.100 / 54.  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'

 

 

以上为新依赖 我这没有 重新弄流程

 

 

结果:

1.先下载我上面的ffmpeg的包  并解压到本地(解压操作只是给你看下内容)

tar zxvf test-test.tar.gz     
[root@dgx test]# ls
ffmpeg             libavfilter.so.6   libmp3lame.so.0     libswscale.so.4    libXau.so.6            libxcb.so.1
libasound.so.2     libavformat.so.57  libogg.so.0         libvorbisenc.so.2  libxcb-shape.so.0      libxcb-xfixes.so.0
libavcodec.so.57   libavutil.so.55    libpostproc.so.54   libvorbis.so.0     libxcb-shape.so.0.0.0  libxvidcore.so.4
libavdevice.so.57  libfdk-aac.so.0    libswresample.so.2  libx264.so.157     libxcb-shm.so.0

解压后的文件名为”test“   自己随意改 例如我改成“ffmpeg”作为这个目录名

 

2. dockerfile编译

FROM centos:7

MAINTAINER dgx
#上面包拷贝进去
ADD test-test.tar.gz  /opt/

#中文 ENV LANG="en_US.UTF-8"

#时间同步 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone \ && mv /opt/ffmpeg/lib* /lib64/ #ffmpeg为我改的目录名

#有其他需求 自己加。 比如按装个java环境 或tomcat啥的

 

3.编译镜像

docker build -t test:test1 -f dockerfile .

 

4.查看版本

[root@43614f18f1d2 opt]# ffmpeg
ffmpeg version 3.3.9 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-39)
  configuration: --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-libmp3lame --enable-libfdk-aac --enable-nonfree --enable-libvorbis --enable-libxvid --enable-libx264 --enable-pthreads --disable-yasm --disable-ffserver --disable-ffplay
  libavutil      55. 58.100 / 55. 58.100
  libavcodec     57. 89.100 / 57. 89.100
  libavformat    57. 71.100 / 57. 71.100
  libavdevice    57.  6.100 / 57.  6.100
  libavfilter     6. 82.100 /  6. 82.100
  libswscale      4.  6.100 /  4.  6.100
  libswresample   2.  7.100 /  2.  7.100
  libpostproc    54.  5.100 / 54.  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'

 

posted @ 2022-08-11 16:03  mrdongdong  阅读(1191)  评论(0编辑  收藏  举报