博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java在上传视频时生成预览图
阅读量:7265 次
发布时间:2019-06-29

本文共 1970 字,大约阅读时间需要 6 分钟。

hot3.png

在圣品上传时往往需要生成一张预览图(缩略图),如果在非特殊情况下让用户单独上传,会造成工作压力,此时可以用视频中某一帧作为封面图,实现方式如下:

public class ImageUtil {    /**     * 生成截图     * @param filePath 视频文件本地路径     * @param targerFilePath 目标文件夹     * @param targetFileName 目标文件名     * @return 图片文件路径     * @throws Exception     */    public static String randomGrabberFFmpegImage(String filePath, String targerFilePath, String targetFileName)            throws Exception {        System.out.println(filePath);        FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(filePath);        ff.start();        Frame f;        int lenght = ff.getLengthInFrames();        int i = 0;        String path = null;        while (i < lenght) {            // 过滤前5帧,避免出现全黑的图片,依自己情况而定            f = ff.grabFrame();            if ((i > 200) && (f.image != null)) {                path = doExecuteFrame(f, targerFilePath, targetFileName);                break;            }            i++;        }        ff.stop();        return path;    }    public static String doExecuteFrame(Frame f, String targerFilePath, String targetFileName) {        if (null ==f ||null ==f.image) {            throw new GlobleException("获取缩略图失败");        }        Java2DFrameConverter converter =new Java2DFrameConverter();        String imageMat ="jpg";        String FileName =targerFilePath + File.separator +targetFileName +"." +imageMat;        BufferedImage bi =converter.getBufferedImage(f);        System.out.println("width:" + bi.getWidth());        System.out.println("height:" + bi.getHeight());        File output =new File(FileName);        try {            ImageIO.write(bi,imageMat,output);        }catch (IOException e) {            throw new GlobleException("缩略图写入文件夹失败");        }        return FileName;    }    public static void main(String[] args) throws Exception {        String s = randomGrabberFFmpegImage("/home/xiao/IMG_3077.mp4", "/home/xiao", "213");        System.out.println(s);    }}

 

转载于:https://my.oschina.net/u/3042999/blog/1830800

你可能感兴趣的文章
源码分析之LayoutInflater
查看>>
【浓缩精华】Linux系统如何配置IP地址
查看>>
IM的群组设计
查看>>
JAVASCRPIT的OpenCharts
查看>>
表单格式化插件jquery.serializeJSON
查看>>
【技术干货】听阿里云CDN安防技术专家金九讲tengine+lua开发
查看>>
LNMP环境搭建
查看>>
重新发送上一篇文章。
查看>>
server-install-shell
查看>>
20.23-20.26 告警系统邮件引擎,运行告警系统
查看>>
HSRP热备份路由选择协议
查看>>
centos6.5 zabbix 3.04 乱码问题
查看>>
适合小白用的css几种睡在中间的方式!!!
查看>>
FileZilla MLSD错误:连接超时、读取目录列表失败
查看>>
awk详解使用用法
查看>>
深度理解nodejs[3]—疯狂事件代码
查看>>
smb协议详解和samba服务的配置
查看>>
5个能够改变一生的自学网站,每天半小时效果看的见!
查看>>
验证码的前世今生(今生篇)
查看>>
家用热水循环系统的好处及缺点
查看>>