ffmpeg 安装

anjingsi 1年前 ⋅ 1108 阅读

ffmpeg 安装

  • 原因是由于在工作中使用ImageIO.read(oldFile)时,大文件压缩时会出现java内存溢出的错误,故使用这个组件进行压缩

http://www.ffmpeg.org/download.html

一、windows安装

1、下载

https://github.com/BtbN/FFmpeg-Builds/releases

2、解压下载的文件,并将解压文件夹中的/bin目录配置成环境变量,配置成功后,重启电脑

3、验证

ffmpeg -version

二、linux安装

a、yum安装

1、安装Nux Dextop Yum 源

CentOS没有官方FFmpeg rpm软件包,故需要安装其他的源来支撑

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
2、安装FFmpeg 和 FFmpeg开发包
yum install ffmpeg ffmpeg-devel -y
3、验证
ffmpeg -version

b、源文件安装

与windows下载的地址一致,只是下载不同的版本而已

1、上传到服务器并解压
[root@doudou opt]# ls
ffmpeg-master-latest-linux64-gpl.tar.xz  glibc-2.25.tar.gz
[root@doudou opt]# xz -kd ffmpeg-master-latest-linux64-gpl.tar.xz 
[root@doudou opt]# ls
ffmpeg-master-latest-linux64-gpl.tar  ffmpeg-master-latest-linux64-gpl.tar.xz  glibc-2.25.tar.gz
[root@doudou opt]# tar -xf ffmpeg-master-latest-linux64-gpl.tar
You have new mail in /var/spool/mail/root
[root@doudou opt]# ls
ffmpeg-master-latest-linux64-gpl  ffmpeg-master-latest-linux64-gpl.tar  ffmpeg-master-latest-linux64-gpl.tar.xz  glibc-2.25.tar.gz
[root@doudou opt]# mv ffmpeg-master-latest-linux64-gpl ffmpeg
[root@doudou opt]# ls
ffmpeg  ffmpeg-master-latest-linux64-gpl.tar  ffmpeg-master-latest-linux64-gpl.tar.xz  glibc-2.25.tar.gz
2、检查依赖是否完整
[root@doudou opt]# cd ffmpeg
[root@doudou ffmpeg]# ls
bin  doc  LICENSE.txt
[root@doudou ffmpeg]# cd bin/
[root@doudou bin]# ls
ffmpeg  ffplay  ffprobe
[root@doudou bin]# ./ffmpeg -version
./ffmpeg: error while loading shared libraries: libmvec.so.1: cannot open shared object file: No such file or directory
[root@doudou bin]# ldd ffmpeg 
./ffmpeg: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by ./ffmpeg)
   linux-vdso.so.1 =>  (0x00007ffe4c5a8000)
   libm.so.6 => /lib64/libm.so.6 (0x00007fd1c792e000)
   libdl.so.2 => /lib64/libdl.so.2 (0x00007fd1c772a000)
   librt.so.1 => /lib64/librt.so.1 (0x00007fd1c7522000)
   libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd1c7306000)
   libc.so.6 => /lib64/libc.so.6 (0x00007fd1c6f38000)
   /lib64/ld-linux-x86-64.so.2 (0x00007fd1cfe86000)
   libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd1c6d22000)
   libmvec.so.1 => not found

libmvec.so.1 => not found 可以发现这儿少运行时的依赖

3、安装libmvec.so.1 => not found缺少的依赖

如果第二步不缺少,则不用执行此步

[root@doudou opt]# tar -xvzf glibc-2.25.tar.gz
[root@doudou opt]# cd glibc-2.25
[root@doudou opt]# mkdir build
[root@doudou opt]# cd build
[root@doudou opt]# ../configure --prefix=/usr
[root@doudou opt]# make -i
[root@doudou opt]# make install -i

进入刚刚安装的ffmpeg的bin目录执行 ldd ffmpeg,如果没有任何的缺少,则表示能正常运行

[root@doudou bin]# ldd ffmpeg 
   linux-vdso.so.1 (0x00007ffc19d2f000)
   libm.so.6 => /lib64/libm.so.6 (0x00007fc8137e2000)
   libdl.so.2 => /lib64/libdl.so.2 (0x00007fc8135de000)
   librt.so.1 => /lib64/librt.so.1 (0x00007fc8133d6000)
   libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc8131b8000)
   libc.so.6 => /lib64/libc.so.6 (0x00007fc812e1e000)
   /lib64/ld-linux-x86-64.so.2 (0x00007fc813af2000)
   libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc812c08000)
   libmvec.so.1 => /lib64/libmvec.so.1 (0x00007fc8129de000)
4、是否安装成功
[root@doudou bin]# ./ffmpeg -version
ffmpeg version N-110946-g859c34706d-20230531 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.2.0 (crosstool-NG 1.25.0.152_89671bf)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --ena
ble-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-openssl --enable-lz
ma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb2
4 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --
enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-lib
vpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable
-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-lib
uavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --en
able-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -l
gomp' --extra-version=20230531
libavutil      58. 12.100 / 58. 12.100
libavcodec     60. 16.100 / 60. 16.100
libavformat    60.  5.100 / 60.  5.100
libavdevice    60.  2.100 / 60.  2.100
libavfilter     9.  8.101 /  9.  8.101
libswscale      7.  3.100 /  7.  3.100
libswresample   4. 11.100 /  4. 11.100
libpostproc    57.  2.100 / 57.  2.100

三、java实现图片压缩

 	public static void main(String[] args) throws IOException {
        ffmpegCompress("C:/temp/1.jpg",20,"C:/temp/666666.jpg");
    }

    /**
     * 图片压缩.
     * 必须安装ffmpeg,下载的地址https://github.com/BtbN/FFmpeg-Builds/releases,配置bin路径的环境变量后,一定要重启windows
     * @param imageSource 源图片
     * @param level 压缩等级,数值越大压缩等级越高
     * @param outSource 输出的目录
     */
    @SneakyThrows
    public static void ffmpegCompress(String imageSource, Integer level, String  outSource){
        String command = "ffmpeg -i %s -q %s %s";
        Runtime.getRuntime().exec(String.format(command, imageSource, level, outSource));
    }

全部评论: 0

    我有话说: