分享一个截屏录屏功能的小软件_马立杰_新浪博客

近期有朋友跟我索要录屏软件,所以分享一个绿色面安装超好用的小软件。
下载地址:
http://5xpan.com/fs/6i1858888888089f338/

FSCapture是一款抓屏工具,具备抓屏和屏幕录像功能,附带的其他多个小功能:取色器、屏幕放大镜、屏幕标尺等。对抓取的图像提供缩放、旋转、减切、颜色调整等功能。只要点点鼠标就能随心抓取屏幕上的任何东西,拖放支持可以直接从系统、浏览器或其他程序中导入图片
功能简介:
1.抓屏
分享一个截屏录屏功能的小软件
2.图片处理

分享一个截屏录屏功能的小软件
3.录屏
分享一个截屏录屏功能的小软件

好的,下面是一个使用JavaCv结合Swing编写的简单录屏软件示例。该示例基本实现了录屏、暂停、继续、停止等基本功能。 首先,需要引入JavaCv和FFmpeg的库文件,例如: ```xml <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.5.3</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>ffmpeg</artifactId> <version>4.4</version> </dependency> ``` 然后,创建一个Swing界面,添加开始录制、暂停录制、继续录制、停止录制等按钮,以及显示录制状态的标签: ```java import org.bytedeco.ffmpeg.global.avcodec; import org.bytedeco.ffmpeg.global.avutil; import org.bytedeco.javacv.FFmpegFrameRecorder; import org.bytedeco.javacv.Frame; import org.bytedeco.javacv.Java2DFrameConverter; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; public class ScreenRecorderApp extends JFrame { private FFmpegFrameRecorder recorder; private Java2DFrameConverter converter; private Robot robot; private Rectangle screenRect; private BufferedImage image; private boolean isRecording; private boolean isPaused; private JLabel statusLabel; public ScreenRecorderApp() { super("屏幕录制"); // 初始化录制参数 int width = 1920; int height = 1080; int fps = 30; try { recorder = new FFmpegFrameRecorder("output.mp4", width, height); recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); recorder.setFormat("mp4"); recorder.setFrameRate(fps); recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P); recorder.start(); converter = new Java2DFrameConverter(); robot = new Robot(); screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); isRecording = false; isPaused = false; // 初始化界面 JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); JButton startButton = new JButton("开始录制"); startButton.addActionListener((e) -> { if (!isRecording) { isRecording = true; isPaused = false; statusLabel.setText("正在录制..."); } }); JButton pauseButton = new JButton("暂停录制"); pauseButton.addActionListener((e) -> { if (isRecording && !isPaused) { isPaused = true; statusLabel.setText("已暂停录制"); } }); JButton resumeButton = new JButton("继续录制"); resumeButton.addActionListener((e) -> { if (isRecording && isPaused) { isPaused = false; statusLabel.setText("正在录制..."); } }); JButton stopButton = new JButton("停止录制"); stopButton.addActionListener((e) -> { if (isRecording) { isRecording = false; statusLabel.setText("已停止录制"); try { recorder.stop(); recorder.release(); } catch (Exception ex) { ex.printStackTrace(); } } }); statusLabel = new JLabel("就绪"); statusLabel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); statusLabel.setHorizontalAlignment(SwingConstants.CENTER); panel.add(startButton, BorderLayout.WEST); panel.add(pauseButton); panel.add(resumeButton); panel.add(stopButton, BorderLayout.EAST); add(panel, BorderLayout.NORTH); add(statusLabel, BorderLayout.CENTER); setSize(400, 150); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } catch (Exception e) { e.printStackTrace(); } } public void startRecording() { new Thread(() -> { long startTime = System.currentTimeMillis(); while (isRecording) { if (!isPaused) { try { image = robot.createScreenCapture(screenRect); Frame frame = converter.convert(image); recorder.record(frame); } catch (Exception e) { e.printStackTrace(); } } try { Thread.sleep(1000 / recorder.getFrameRate()); } catch (InterruptedException e) { e.printStackTrace(); } if (System.currentTimeMillis() - startTime > 60 * 1000) { isRecording = false; statusLabel.setText("已停止录制"); try { recorder.stop(); recorder.release(); } catch (Exception e) { e.printStackTrace(); } } } }).start(); } public static void main(String[] args) { new ScreenRecorderApp().startRecording(); } } ``` 以上代码中,通过创建一个新的线程来进行录制,每隔一定时间获取屏幕截图并转换成JavaCv的Frame对象,写入到视频文件中。可以通过控制isRecording和isPaused的值来控制录制状态。在录制完成或停止时,需要停止录制并释放资源。 注意,由于录制屏幕需要操作系统的权限,所以需要以管理员身份运行程序。 希望这个简单的录屏软件示例能够帮到你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马立杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值