centos7 docker容器安装最小镜像的ffmpeg 3.3.9版本(版本随意 方法一样)
- ffmpeg是一个命令行工具箱,用于操作,转换和流式传输多媒体内容。
- ffplay是一个简约的多媒体播放器。
- ffprobe是一个简单的分析工具,用于检查多媒体内容。
- 其他小工具,如 、 和 。
aviocat
ismindex
qt-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
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'