前两天准备录个视频,结果录屏大师开始收费了很尴尬,想一想学了这么久的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

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





