Linux安装ffmpeg抓取图片视频缩略图使用官方下载链接:http://www.ffmpeg.org/downloa...我用的版本这里:ffmpeg_3.2_repo.tar.gz可以百度网盘分享给大家。安装环境为Centos64位操作系统。安装时必须root用户操作#解压tar-zxvfffmpeg_3.2_repo.tar.gz#进入目录cdffmpeg_3.2_repo#安装可能需要一点时间shsetup.sh拦截图片缩略图命令ffmpeg-ia.png-y-vfscale=100:100/athumb.jpga.png原图100:100缩略图宽度:缩略图高度thumb.jpg缩略图截取视频第一帧缩略图命令ffmpeg-ibb.mp4-y-vframes1-vfscale=100:100/athumb.jpgbb.mp4原视频100:100Thumbnailwidth:Thumbnailheightthumb.jpg缩略图图片调用java命令生成缩略图工具类包com.beyond.utils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.io.BufferedReader;importjava.io.Closeable;importjava.io.File;importjava.io.InputStreamReader;/***执行shell命令ffmpeg工具类liang*/publicclassShellCommandUtil{privatestaticfinalLoggerlogger=LoggerFactory.getLogger(ShellCommandUtil.class);/****@paramsourceFile原始文件路径*@paramthumbFile 目标文件路径*@paramthumbWidth width*@paramthumbHigh 高度*@return*ffmpeg-ia.png-y-vfscale=100:100/athumb.jpg*/publicstaticbooleanffmpegImg(StringsourceFile,StringthumbFile,StringthumbWidth,StringthumbHigh){Stringcmd="ffmpeg-i"+sourceFile+"-y-vfscale="+thumbWidth+":"+thumbHigh+"/a"+thumbFile;execCmd(命令,空);logger.info("ShellCommandUtil---ffmpegImg==",cmd);文件文件=新文件(缩略图文件);if(!file.exists()){返回false;}返回真;}/****@paramsourceFile*@paramthumbFile*@paramthumbWidth*@paramthumbHigh*@return*ffmpeg-ibb.mp4-y-vframes1-vfscale=100:100/athumb.jpg*/publicstaticbooleanffmpegVideo(StringsourceFile,StringthumbFile,StringthumbWidth,StringthumbHigh){Stringcmd="ffmpeg-i"+sourceFile+"-y-vframes1-vfscale="+thumbWidth+":"+thumbHigh+"/a"+thumbFile;execCmd(cmd,null);logger.info("ShellCommandUtil---ffmpegVideo==",cmd);Filefile=newFile(thumbFile);if(!file.exists()){returnfalse;}returntrue;}/***执行系统命令并返回执行结果*@paramcmd要执行的命令*@paramdir的工作执行命令目录的子进程,null表示与当前主进程工作目录相同*/;BufferedReaderbufrError=null;try{String[]commond={"/bin/sh","-c",cmd};//执行命令并返回一个子进程对象(命令在子进程中执行)process=Runtime.getRuntime().exec(commond,null,dir);//方法被阻塞,等待命令执行完成(成功则返回0)process.waitFor();//获取命令执行结果,有两种结果:正常输出和错误输出(PS:子进程的输出是主进程的输出输入)bufrIn=newBufferedReader(newInputStreamReader(process.getInputStream(),"UTF-8"));bufrError=newBufferedReader(newInputStreamReader(process.getErrorStream(),"UTF-8"));//读取输出Stringline=null;while((line=bufrIn.readLine())!=null){result.append(line).append('\n');}while((line=bufrError.readLine())!=null){result.append(line).append('\n');}}catch(Exceptione){e.printStackTrace();}最后{closeStream(bufrIn);关闭流(bufrError);//销毁子进程if(process!=null){process.destroy();}}//返回执行结果returnresult.toString();}privatestaticvoidcloseStream(Closeablestream){if(stream!=null){try{stream.close();}catch(Exceptione){e.printStackTrace();}}}}
