java实现录屏软件

作者因录屏软件收费,利用Java技能自制录屏工具。该工具实现屏幕录制及本地音频录制,通过JavaFX和javacv库搭建界面与录制功能。用户可自选录制区域,设定存储位置,支持快捷键操作。

前两天准备录个视频,结果录屏大师开始收费了很尴尬,想一想学了这么久的java了,写一个工具练练手,因此就有了如下丑陋的一个工具,完成了基本的录屏和录制本地音频。今后有机会让它再进化进化,目前已经可以让我录别人的视频了。

一、窗口

package com.piziwang.frame;

import com.piziwang.service.VideoRecode;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.ImageView;
import javafx.scene.input.*;
import javafx.scene.layout.*;
import javafx.scene.paint.Paint;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

import java.awt.*;
import java.io.File;

public class MainFrame extends Application {
   
   

    private Stage primary;

    private Stage stage;

    ImageView iv;

    HBox hBox;

    VideoRecode videoRecord;

    double screenX_start;
    double screenY_start;
    double screenX_end;
    double screenY_end;
    double sceneX =100;
    double sceneY =100;

    String path="D://screenRecoding";//存储位置


    @Override
    public void start(Stage primaryStage) throws Exception {
   
   
        primary = primaryStage;

        AnchorPane root = new AnchorPane();

        Button bu = new Button("选择录屏区域");
        bu.setPrefWidth(180);
        Button begin_recode_btn = new Button("开始录屏");
        begin_recode_btn.setPrefWidth(180);
        begin_recode_btn.setOnMouseClicked(new EventHandler<MouseEvent>() {
   
   

            public void handle(MouseEvent event) {
   
   
                beginRecodeVideo();
            }
        });


        Button stop_recode_btn = new Button("结束录屏");
        stop_recode_btn.setPrefWidth(180);
        stop_recode_btn.setOnMouseClicked(new EventHandler<MouseEvent>() {
   
   
            public void handle(MouseEvent event) {
   
   
                stopRecodeVideo();
            }
        });

        Button open_dir_btn = new Button("打开存放位置");
        open_dir_btn.setPrefWidth(180);
        Button choose_dir_btn = new Button("选择存储位置");
        choose_dir_btn.setPrefWidth(180);
        final Label choose_dir_label = new Label(path);
        choose_dir_label.setPrefWidth(500);
        choose_dir_label.setPrefHeight(50);
        choose_dir_label.setBorder(new Border(new BorderStroke( Paint.valueOf("#292929"),BorderStrokeStyle.SOLID,new CornerRadii(5.0),new BorderWidths(2))));

        choose_dir_btn.setOnMouseClicked(new EventHandler<MouseEvent>() {
   
   

            public void handle(MouseEvent event) {
   
   
                DirectoryChooser directoryChooser=new DirectoryChooser();
                File file = directoryChooser.showDialog(stage);
                try{
   
   
                    path = file.getPath();//选择的文件夹路径
                }catch (Exception e){
   
   
                    path="D://screenRecoding";
                }

                choose_dir_label.setText("  "+path);
                System.out.println(path);
            }
        });

        root.getChildren().add(bu);
        AnchorPane.setTopAnchor(bu,100.0);
        AnchorPane.setLeftAnchor(bu,50.0);

        root.getChildren().add(choose_dir_btn);
        AnchorPane.setTopAnchor(choose_dir_btn,200.0);
        AnchorPane.setLeftAnchor(choose_dir_btn,50.0);

        root.getChildren().add(choose_dir_label);
        AnchorPane.setTopAnchor(choose_dir_label,200.0);
        AnchorPane.setLeftAnchor(choose_dir_label,250.0);

        root.getChildren().ad
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值