内部网站建设的步骤过程,网站建设硬件投入表,pdf转wordpress,凡科互动游戏文章目录 视频生成缩略图使用ffmpeg 视频生成缩略图
最近有个需求#xff0c;视频上传之后在列表和详情页需要展示缩略图
使用ffmpeg
首先引入jar包
dependencygroupIdorg.bytedeco/groupIdartifactIdjavacpp/artifactIdvers… 文章目录 视频生成缩略图使用ffmpeg 视频生成缩略图
最近有个需求视频上传之后在列表和详情页需要展示缩略图
使用ffmpeg
首先引入jar包
dependencygroupIdorg.bytedeco/groupIdartifactIdjavacpp/artifactIdversion1.4.3/version
/dependency
dependencygroupIdorg.bytedeco/groupIdartifactIdjavacv/artifactIdversion1.4.3/version
/dependency
dependencygroupIdorg.bytedeco.javacpp-presets/groupIdartifactIdffmpeg-platform/artifactIdversion4.0.2-1.4.3/version
/dependency代码如下
public String getThumbnails(String videoFilePath){String path /Users/zhanghe/Desktop/pic/;String fileName videoFilePath.substring(videoFilePath.lastIndexOf(/) 1, videoFilePath.lastIndexOf(.))_thumb.jpg;String filePath StringUtils.join(path, fileName);File targetFile new File(filePath);try {FFmpegFrameGrabber ff new FFmpegFrameGrabber(videoFilePath);ff.start();// 视频总帧数int videoLength ff.getLengthInFrames();org.bytedeco.javacv.Frame f null;int i 0;while (i videoLength) {// 过滤前20帧,因为前20帧可能是全黑的// 这里看需求也可以直接根据帧数取图片f ff.grabFrame();if (i 20 f.image ! null) {break;}i;}int owidth f.imageWidth;int oheight f.imageHeight;// 对截取的帧进行等比例缩放int width 800;int height (int) (((double) width / owidth) * oheight);Java2DFrameConverter converter new Java2DFrameConverter();BufferedImage fecthedImage converter.getBufferedImage(f);BufferedImage bi new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);bi.getGraphics().drawImage(fecthedImage.getScaledInstance(width, height, Image.SCALE_SMOOTH),0, 0, null);ImageIO.write(bi, jpg, targetFile);ff.stop();System.out.println(targetFile.getPath());return targetFile.getPath();} catch (IOException e) {e.printStackTrace();}return ;}参考文献
视频生成缩略图