使用javaFX 做一个屏幕录像工具

基于https://blog.csdn.net/qq_36270700/article/details/109334232 上一篇,用javaFX做一个屏幕选择框后,借助ffmpeg,实现屏幕录制

整体思路为

1、选取屏幕区域,通过屏幕选择框,可以得到选取得坐标

2、根据帧率 , 设置间隔时间,再通过Robot截取指定区域屏幕

3、通过ffmpeg将截图合成视频

4、通过ffmpeg将视频转换为gif

重要的是 通过视频合成的gif体积较小!

实现效果:

 

代码就两个类,跑Main的main函数即可

这边默认帧率为100,实际上会加速,因为通过计算,每秒期望截10张图,但是执行过程中会有短暂的延迟,导致和期待帧率有偏差,这个可以自己调整

 

比较简单总共两个类加一个ffmpeg.exe

 

ScreenUtil

package screen;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.imageio.ImageIO;


public class ScreenUtil {
    static String ffmpeg = ScreenUtil.class.getResource("ffmpeg.exe").getFile();

    int bigNum = 1000000000;

    private String PATH = null;

    private String fileTypeName = "jpg";
    private String fileType = "." + fileTypeName;

    private String fieldName = "test";

    public ScreenUtil(String fieldName) {
        this.fieldName = fieldName;
    }

    public String getPATH() {
        return PATH;
    }

    public void setPATH(String PATH) {
        File file = new File(PATH + "/" + this.fieldName);
        while(file.exists()){
            this.fieldName = this.fieldName + "1";
            file = new File(PATH + "/" + this.fieldName);
        }
        this.PATH = PATH + "/";
    }

    public String getFileNamePatten(){
        return PATH + fieldName + "/1%09d" + fileType ;
    }

    //画鼠标
    private void buildMousePic(BufferedImage image,Double x,Double y) {
        Point p= MouseInfo.getPointerInfo().getLocation();
        image.createGraphics().drawOval(p.x-x.intValue() -20, p.y-y.intValue() -20,20,20);
    }

    public void printScreen(Double x,Double y,Double w ,Double h,int num) throws AWTException, IOException {
        //转视屏的时候需要32的倍数和2的倍数
        if (w % 32 != 0)
        {
            w = w.intValue() / 32 * 32D;
        }

        if (h % 2 != 0) {
            h = h.intValue() / 2 * 2D ;
        }
        // 截取屏幕
        BufferedImage image = new
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本
使用JavaFX开发电商管理系统时,可以通过以下方式实现钱包余额功能: 1. 用户注册:在用户注册页面中,添加一个钱包余额输入框,当用户填写完其他必填信息后,可以选择输入一个初始的钱包余额。这个初始余额可以是系统预设的默认值,或者由用户自行填写。注册成功后,系统会保存用户的钱包余额信息。 2. 用户登录:在用户登录页面中,显示用户的钱包余额。用户成功登录后,系统会获取该用户的钱包余额并显示在界面上。 3. 购物结算:用户选择商品加入购物车后,进入结算页面。在结算页面中,显示用户的钱包余额和所购商品的总金额。用户可以选择使用钱包余额进行支付,系统会根据用户选择的支付方式计算应支付的金额和钱包余额的扣除情况。 4. 充值功能:用户可以选择充值按钮,进入充值页面。用户在充值页面中填写充值金额,并选择支付方式完成充值操作。充值后,系统会更新用户的钱包余额,并将充值记录保存到数据库中。 5. 提现功能:用户可以选择提现按钮,进入提现页面。用户在提现页面中填写提现金额,并选择提现方式完成提现操作。系统会根据用户的提现金额和提现方式进行相应的处理,并更新用户的钱包余额。 6. 钱包余额变动记录:系统会记录用户钱包余额的变动情况,包括充值、提现和购物结算的扣款记录。用户可以通过查看余额变动记录来了解自己的钱包使用情况。 通过以上方法,可以在电商管理系统中实现钱包余额功能,用户可以方便地查看余额、进行充值提现和使用余额进行购物结算。同时,对于用户的钱包操作,系统也会记录变动情况,以方便用户查看和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值