Java简单实现视频录制播放功能
用Robot类,来连续截取屏幕图片,并通过JLabel连续加载图片,来实现一个视频录制的功能。
StartCapture.java类是主类,用来实现录制桌面图片的功能,以下是代码
package CountDown;import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JToolBar;
import javax.swing.JWindow;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.border.EtchedBorder;
import Util.FrameUtils;
import Util.UI;public class StartCapture {JFrame frame = null;int WIDTH = 580;int HEIGHT = 290;JLabel titleLabel = null;JLabel timeLabel = null;JLabel currentTime = null;JWindow openFrame = null;JMenuBar bar = null;JMenu menu = null;JMenu menu2 = null;JMenu menu3 = null;JPanel panel = null;InnerTask it = new InnerTask();boolean isRecord = false; //视频是否正在录制Point startPoint = null;Point endPoint = null;JPanel windowPanel = null;JPanel panelRight = null;JToolBar stateBar = null;//++++++++++++++++++++++++++++++++++JList videoList = null;DefaultListModel listModel = null;JScrollPane scrollPane = null;//++++++++++++++++++++++++++++++++++public void initList(){listModel.clear();List list = CapUtils.getCaptureFolder();int length = list.size();//++++++++++++++++++++++++++++++++++++++for(int i=0;i<length;i++){listModel.addElement(" "+list.get(i));}}public StartCapture() {panelRight = new JPanel();listModel = new DefaultListModel();initList();videoList = new JList(listModel);videoList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);videoList.setSelectedIndex(0);videoList.setVisibleRowCount(5);videoList.addMouseListener(new MouseAdapter(){@Overridepublic void mouseClicked(MouseEvent e) {
// if(e.getClickCount() == 2 && e.getButton() == 1){
// String list = (String) listModel.get(videoList.getSelectedIndex());
// new ShowCapture(CapUtils.URL+list.trim());
// }if(e.getButton() == 3){int index = videoList.locationToIndex(e.getPoint());videoList.setSelectedIndex(index);JPopupMenu menu = new JPopupMenu("dddddd");JMenuItem item1 = new JMenuItem("播放");JMenuItem item3 = new JMenuItem("删除");menu.add(item1);menu.add(new JSeparator(SwingConstants.HORIZONTAL));menu.add(item3);menu.show(videoList, e.getX(), e.getY());item1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {if(listModel.getSize() !=0){String list = (String) listModel.get(videoList.getSelectedIndex());new ShowCapture(CapUtils.URL+list.trim());}}});item3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {if(listModel.getSize() !=0){int isDelete = JOptionPane.showConfirmDialog(frame, "是否删除录制的视频?", "删除", JOptionPane.YES_NO_OPTION);if(isDelete == 0){String list = (String) listModel.get(videoList.getSelectedIndex());File file = new File(CapUtils.URL+list.trim());File[] files = file.listFiles();for(int i = 0;i<files.length;i++){files[i].delete();}file.delete();listModel.remove(videoList.getSelectedIndex());}}}});}}});scrollPane = new JScrollPane(videoList);scrollPane.setPreferredSize(new Dimension(200,200));panelRight.add(scrollPane);//+++++++++++++++++++++++++++++++++++++++panel = new JPanel(new BorderLayout());frame = new JFrame("QNM录制");frame.setLayout(new BorderLayout());Font font = new Font("",Font.ITALIC,32);timeLabel = new JLabel();timeLabel.setFont(font);Font font2 = new Font("",Font.LAYOUT_RIGHT_TO_LEFT,32);titleLabel = new JLabel(" 距离本月发饷:");titleLabel.setFont(font2);Font font3 = new Font("",Font.PLAIN,32);currentTime = new JLabel("",JLabel.RIGHT);currentTime.setFont(font3);bar = new JMenuBar();menu = new JMenu("文件");menu2 = new JMenu("录制");menu3 = new JMenu("播放");bar.add(menu);bar.add(menu2);bar.add(menu3);JMenuItem item1 = new JMenuItem("打开目录");JMenuItem item2 = new JMenuItem("开始录制");JMenuItem item3 = new JMenuItem("停止录制");JMenuItem item4 = new JMenuItem("播放录制");menu.add(item1);menu2.add(item2);menu3.add(item4);menu2.add(new JSeparator(SwingConstants.HORIZONTAL));menu2.add(item3);stateBar = new JToolBar();stateBar.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));stateBar.setEnabled(false);stateBar.add(new JLabel(" 欢迎使用QNM系统"));frame.getContentPane().add(stateBar, BorderLayout.SOUTH);frame.getContentPane().add(bar, BorderLayout.NORTH);panel.add(currentTime, BorderLayout.SOUTH);panel.add(titleLabel, BorderLayout.NORTH);panel.add(timeLabel, BorderLayout.CENTER);
// panel.add(currentTime);
// panel.add(titleLabel);
// panel.add(timeLabel);frame.add(panel,BorderLayout.CENTER);frame.add(panelRight,BorderLayout.WEST);frame.setBounds(FrameUtils.getSysLocation(WIDTH, HEIGHT));//frame.setUndecorated(true);frame.setVisible(true);frame.setDefaultCloseOperation(3);//frame.setResizable(false);panel.addMouseListener(new MouseAdapter(){@Overridepublic void mouseClicked(MouseEvent e) {if(e.getButton() == 3){JOptionPane.showMessageDialog(frame, "QNM系列");}}});item2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {it.startCapture();}});item3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {it.stopCapture();}});item1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {String cmd = "cmd /c start "+CapUtils.URL;try {Runtime.getRuntime().exec(cmd);} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}return;}});item4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {if(listModel.getSize() !=0){String list = (String) listModel.get(videoList.getSelectedIndex());new ShowCapture(CapUtils.URL+list.trim());}else{JOptionPane.showMessageDialog(frame, "未选中任何文件");}}});Timer timer = new Timer();TimerTask task = new TimerTask(){@Overridepublic void run() {Calendar cal = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();if(cal.get(Calendar.DATE)>=15){cal2.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, 15, 0, 0, 0);}else{cal2.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), 15, 0, 0, 0);}long saveTime = cal2.getTimeInMillis() - cal.getTimeInMillis();long second = saveTime/1000;long minute = second/60;long hour = minute/60;long day = hour/24;long saveHour = (hour%24);long saveMinute = minute%60;long saveSecond = second%60;String saveStr = " "+day+"天"+saveHour+"小时"+saveMinute+"分钟"+saveSecond+"秒";cal.setTimeInMillis(System.currentTimeMillis());String time = cal.get(Calendar.YEAR) + "-"+ (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.DATE)+ " " + cal.get(Calendar.HOUR_OF_DAY)+":" +cal.get(Calendar.MINUTE)+":" +cal.get(Calendar.SECOND);timeLabel.setText(saveStr);currentTime.setText(time+" ");}};timer.schedule(task, 0, 500);}/*** 内部任务,用来展开视频录制的开始与停止的。* @author Administrator**/class InnerTask{Timer captureDeskTopTimer = null;TimerTask captureDeskTopTask = null;File folderFile = null;public void startCapture(){if(!isRecord){folderFile = new File(CapUtils.URL+System.currentTimeMillis());System.out.println(folderFile.getPath());if(!folderFile.isDirectory()){folderFile.mkdir();}System.out.println("正在录制");captureDeskTopTimer = new Timer();captureDeskTopTask = new TimerTask(){@Overridepublic void run() {try {Robot ro = new Robot();BufferedImage bdi = ro.createScreenCapture(new Rectangle((int)FrameUtils.getScreenWidth(),(int)FrameUtils.getScreenHeight()));ImageIO.write(bdi, "jpg", new File(folderFile.getPath()+"\\"+System.currentTimeMillis()+".jpg"));} catch (AWTException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}};captureDeskTopTimer.schedule(captureDeskTopTask, 0, 40);isRecord = true;}}public void stopCapture(){if(isRecord){captureDeskTopTimer.cancel();isRecord = false;String newName = JOptionPane.showInputDialog(frame,"是否重命名录制的视频,为空则默认","重命名",JOptionPane.YES_NO_CANCEL_OPTION);if("".equals(newName)|| newName == null || "null".equals(newName)){listModel.addElement(" "+folderFile.getName());videoList.setSelectedValue(" "+folderFile.getName(), true);}else{File newFile = new File(CapUtils.URL+newName);folderFile.renameTo(newFile);listModel.addElement(" "+newName);videoList.setSelectedValue(" "+newName, true);}}}}public static void main(String[] args) {UI.setWindowStyle();new StartCapture();}
}
ShowCapture.java类,实现视频图片的播放
package CountDown;import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;import Util.FrameUtils;import com.sun.awt.AWTUtilities;public class ShowCapture {JFrame frame = null;int WIDTH = 500;int HEIGHT = 500;JLabel label = null;public ShowCapture(final String url) {frame = new JFrame();label = new JLabel();final Timer timer = new Timer();TimerTask task = new TimerTask(){File file = new File(url);File[] files = file.listFiles();final int size = files.length;int index = 0;@Overridepublic void run() {if(index < size-1){label.setText("");Image image = Toolkit.getDefaultToolkit().getImage(files[index].getPath());ImageIcon icon = new ImageIcon();image = image.getScaledInstance((int)FrameUtils.getScreenWidth(),(int)FrameUtils.getScreenHeight(), Image.SCALE_FAST);icon.setImage(image);label.setIcon(icon);index++;}else{timer.cancel();frame.getContentPane().setBackground(Color.BLACK);AWTUtilities.setWindowOpacity(frame, 0.5f);frame.remove(label);JOptionPane.showMessageDialog(frame, " 播放完毕!");frame.dispose();}}};timer.schedule(task, 1000, 200);frame.setUndecorated(true);frame.add(label);frame.setBounds(0,0,(int)FrameUtils.getScreenWidth(),(int)FrameUtils.getScreenHeight());frame.setVisible(true);frame.setDefaultCloseOperation(3);frame.setResizable(false);Toolkit toolkit = Toolkit.getDefaultToolkit();toolkit.addAWTEventListener(new AWTEventListener(){public void eventDispatched(AWTEvent event) {if(event.getClass()== KeyEvent.class){KeyEvent e = (KeyEvent) event;int key = e.getKeyCode();if(key == 27){timer.cancel();frame.dispose();}}}}, 1000);}public static void main(String[] args) {new ShowCapture("");}}
还有两个工具类FrameUtils.java和UI.java
package Util;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GraphicsEnvironment;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import java.util.Random;import javax.swing.JDialog;
import javax.swing.JFrame;public class FrameUtils {static Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();static Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(GraphicsEnvironment.getLocalGraphicsEnvironment().getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration());/*** 获得整个屏幕的宽度* * @return*/public static double getScreenWidth() {return screen.getWidth();}/*** 获得整个屏幕的高度* * @return*/public static double getScreenHeight() {return screen.getHeight();}/*** 获得程序在屏幕中间的位置* * @param WIDTH* 程序的宽度* @param HEIGHT* 程序的高度* @return Rectangle*/public static Rectangle getSysLocation(int WIDTH, int HEIGHT) {Rectangle rectangle = new Rectangle();rectangle.setLocation((int) (getScreenWidth() - WIDTH) / 2,(int) (getScreenHeight() - HEIGHT) / 2);rectangle.setSize(WIDTH, HEIGHT);return rectangle;}/*** 获得程序在屏幕右下角的位置* * @param WIDTH* 程序的宽度* @param HEIGHT* 程序的高度* @return Rectangle*/public static Rectangle getRDLocation(int WIDTH, int HEIGHT) {Rectangle rectangle = new Rectangle();rectangle.setLocation((int) (getScreenWidth() - WIDTH),(int) (getScreenHeight() - HEIGHT - insets.bottom));rectangle.setSize(WIDTH, HEIGHT);return rectangle;}public static void confirm(Frame frame) {JDialog dialog = new JDialog(frame, true);dialog.setBackground(Color.white);int width = 100;int height = 100;dialog.setBounds((int) (getScreenWidth() - width) / 2,(int) (getScreenHeight() - height) / 2, width, height);dialog.setTitle("ffffffff");dialog.setVisible(true);}static Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();/*** 向系统粘贴板中写入字符串* * @param temp* 要写入的字符串*/public static void storeClipString(String temp) {StringSelection stringSelection = new StringSelection(temp);sysClip.setContents(stringSelection, null);}/*** 读取系统粘贴板中的字符串* * @return*/public static String readClipString() {String temp = "";try {temp = (String) sysClip.getData(DataFlavor.stringFlavor);} catch (UnsupportedFlavorException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return temp;}public static void shakeWindow(JFrame frame){Rectangle currentRect = new Rectangle();currentRect.setLocation(frame.getLocation());currentRect.setSize(frame.getSize());for (int i = 0; i < 5; i++) {Random random = new Random();int raint = (int) (random.nextFloat() * 10);int newPointX = currentRect.getLocation().x + raint;int newPointY = currentRect.getLocation().y + raint;;frame.setBounds(newPointX, newPointY, currentRect.getSize().width, currentRect.getSize().height);frame.setVisible(true);try {Thread.sleep(10);} catch (InterruptedException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}public static void main(String[] args) {}}
package Util;import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;public class UI {public static void setWindowStyle() {try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnsupportedLookAndFeelException e) {// TODO Auto-generated catch blocke.printStackTrace();};}public static void setOtherStyle() {try {UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnsupportedLookAndFeelException e) {// TODO Auto-generated catch blocke.printStackTrace();};}}
package CountDown;import java.util.ArrayList;
import java.util.List;public class CapUtils {public static String URL = "/";public static List getCaptureFolder(){List list = new ArrayList();return list;}
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Spring Boot修改Tomcat配置
Spring Boot框架默认使用自动嵌入的Tomcat,可以在配置文件中修改Tomcat的一些参数,具体如下:server. Port = xxxxserver. Address =server. contextPath =server. displayName =server. servletPath =server. contextParameters =server. useForwardHeaders =server. server…...
2024/4/28 1:50:48 - 黑马程序员--学习笔记之SQL注入漏洞攻击
--------------------- Windows Phone 7手机开发 .Net培训 期待与您交流! ---------------------- 1、SQL注入漏洞攻击登录判断:select * from T_Users where UserName=... and Password=...,将参数拼到SQL语句中.构造恶意的Password: ‘ or ’1=1 …...
2024/4/27 23:15:24 - 支付宝小程序开发练习,显示自定义二维码(四)
之前用了几种方式1.后端生成二维码需要加密的字符窜,小程序前端利用二维码组件渲染canvas画出二维码,由于支付宝小程序没有这样的组件,于是去找微信小程序的解决方案,把微信小程序的二维码前端组件搬过来用,调试到不报错了,结果二维码显示不出来,原因很难找,宣告失败!…...
2024/4/28 11:51:39 - 目前流行的前端开发框架
作为前端开发者,各种框架的层出不穷,促使我们要不断学习才能防止落后,但是我们不可能做到每个框架都有学习的时间,我们只需要掌握流行的,坑少的即可。从以下三个方面了解目前流行的前端开发框架。 ####一.跨多平台开发框架 (1).uni-app–开发一次,多端覆盖 uni-app 是DCl…...
2024/4/28 6:51:05 - 闲话网名之-----穿过地狱去看海
博客网名接龙规则:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 网名接龙到现在越来越长了,是我们之前没想到的。那么我就简单说一下规则,以免新被点到的博友一头雾水: 1、冤有头债有主,在文章开头,附上前一篇的文章…...
2024/4/28 7:58:35 - 【墨者学院】SQL手工注入漏洞测试(Access数据库)
背景介绍 安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境IIS+ASP+Access,Aspx代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。 实训目标 1.掌握SQL注入原理; 2.了解手工注入的方法; 3.了解Access的数据结构; 4.了解字符串…...
2024/4/17 18:50:17 - Axure RP Pro - Widget部件 - 水平线不能调整高度,垂直线不能调整宽度
Axure RP Pro - Widget部件 - 水平线不能调整高度,垂直线不能调整宽度 在Axure RP Pro 5中,Horizontal Line“水平线”的高度固定为10像素,而Vertical Line“垂直线”的宽度固定为10像素。在大多数情况下不影响原型的设计,当需要修改时,可以使用Rectangle“矩形”代替Hori…...
2024/4/20 4:06:06 - java 图片生成视频 完成录屏操作
前段时间做IOS自动化需要完成录屏操作,但是已经能够获取手机屏幕的一张张图片,通过下面java代码能够使得 生成的连续的图片变成视频,代码如下:DefaultMovieInfoProvider dmip= new DefaultMovieInfoProvider("dst.avi");//生成视频的名称 dmip.setFPS(…...
2024/4/20 15:11:41 - 我亲眼见证了一场黑客“机机”大战,黑马冠军的手法很skr
上周,雷锋网编辑收到永信至诚小伙伴的私聊,“小老弟,周末我们有场机机大战来不来?” 见编辑发送过去迷惑的表情包,对方进一步解释到,“就是RHG大赛(Robo Hacking Game),给黑客解放双手,让他们搞出来的机器人互相PK。”很难想象网络安全大赛上黑客们不搞机了,开始嗑瓜…...
2024/4/18 23:33:30 - php sql注入漏洞与修复
出于安全考虑,需要过滤从页面传递过来的字符。 通常,用户可以通过以下接口调用数据库的内容:URL地址栏、登陆界面、留言板、搜索框等。 轻则数据遭到泄露,重则服务器被拿下。一、SQL注入的步骤 a) 寻找注入点(如:登录界面、留言板等) b) 用户自己构造SQL语句(如: or 1=…...
2024/4/20 12:35:37 - 帆软报表FineReport中数据连接之Tomcat配置JNDI连接
1. 问题描述 在帆软报表FineReport中,通过JNDI方式定义数据连接,首先在Tomcat服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,即可成功使用JNDI连接,连接步骤如下: 2. 实现步骤使用版本及环境 下面以Windows XP系统,tomcat 5.5,jdk 1.6,连接SQLserver2000数据库…...
2024/4/17 18:51:46 - 人工智能真的会取代前端开发吗?
前言相信不少人看过一篇人工智能已经能实现自动编写HTML,CSS的文章,人工智能开始取代前端的一部分工作。消息一出便激起了很多前端工程师的恐慌和讨论,很多刚刚准备学习前端开发的小伙伴也开始犹豫不决。前端开发行业真的被人工智能取代吗?答案是,不会的。原因有三个1、前…...
2024/4/20 7:15:59 - UV动画/纹理融合/法线贴图/过程纹理
让VS支持Shaderlab语法VS2013中并没有Shaderlab的语法高亮,好在网上已经有个插件来支持语法的高亮和拼写提示,从这里下载插件,双击安装就好了。ShaderlabVS - https://github.com/wudixiaop/ShaderlabVS/releases不过由于VS配色的关系,还需要微调一下,按下面步骤1. 打开 V…...
2024/4/17 18:51:40 - 我亲眼见证了一场黑客“机机”大战,黑马冠军的手法很skr...
上周,雷锋网编辑收到永信至诚小伙伴的私聊,“小老弟,周末我们有场机机大战来不来?” 见编辑发送过去迷惑的表情包,对方进一步解释到,“就是RHG大赛(Robo Hacking Game),给黑客解放双手,让他们搞出来的机器人互相PK。”很难想象网络安全大赛上黑客们不搞机了,开始嗑瓜…...
2024/4/17 18:53:12 - 常见的Web攻击方式:SQL注入、XSS跨站脚本攻击、跨站点请求伪造
常见的Web攻击有SQL注入、XSS跨站脚本攻击、跨站点请求伪造共三类,下面分别简单介绍。 1 SQL注入 1.1 原理SQL注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。SQL注入漏洞到底是以怎样的形式进行攻击的呢,接…...
2024/4/17 18:51:10 - tomcat 配置虚拟路径
在实际开发中,有时候需要把静态文件或者图片上传到tomcat中,但是如果上传到跟项目同目录的webapp下,当项目重新部署或者tomcat由于其他原因重启后,这些文件将会消失,势必会影响到现网的生产,所以我们需要把这些文件放到服务器的其他物理路径下,通过tomcat的server.xml 文…...
2024/4/20 11:30:41 - 如何使用java代码进行视频格式的转换(FLV)
一,前言 在给网页添加视频播放功能后,发现上传的视频有各种式,那么就需要将他么转换成FLV,以很好的支持在线视频播放。 公司一直在使用中,配合使用,感觉不错,每天转换的文件超过上千个。二,准备 工具包 : drv43260.dll,ffmpeg.exe,mencoder.exe,pncrt.dl…...
2024/4/20 12:04:42 - 在线透明favicon ico图标文件制作 - aTool在线工具
原址:http://www.atool.org/ico.php在线透明favicon ico图标文件制作 - aTool在线工具支持格式 png、jpg、gif 在线转换成透明.ico图标。【图片处理推荐:】iOS | 安卓图片批量剪裁 | 透明图片resize/ 压缩大小 | png | jpg无损压缩 | 制作透明圆角图片 | 图片格式转化 | 图片…...
2024/4/18 15:25:51 - 如何优化tomcat配置(从内存、并发、缓存4个方面)优化
Tomcat有很多方面,我从内存、并发、缓存四个方面介绍优化方法。 **一.Tomcat内存优化**Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 JAVA_OPTS参数说明 -server 启用jdk 的 server 版; -Xms java虚拟机初…...
2024/4/26 16:06:46 - Oblog博客系统存在SQL注入漏洞http://www.anqn.com
以下是代码片段:<Script type=text/javascript><-- google_ad_client = "pub-6189616927295720"; google_ad_width = 250; google_ad_height = 250; google_ad_format = "250x250_as"; google_ad_type = "text_image"; //2006-11-09: …...
2024/4/17 18:51:28
最新文章
- 未来想从事Linux 后台开发,需要学习linux内核吗?
先列出主要观点,有时间再补充细节: “学习Linux内核”对不同的人有不同的含义,学习方法、侧重点、投入的精力也大不相同。我大致分三类:reader、writer、hacker。reader 就是了解某个功能在内核的大致实现 how does it work&…...
2024/4/28 16:04:43 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - A股企业数据要素利用水平数据集(2001-2022年)
参照史青春(2023)的做法,团队对上市公司-数据要素利用水平进行测算。统计人工智能技术、区块链技术、云计算技术、大数据技术、大数据技术应用五项指标在企业年报中的披露次数,求和后衡量数据要素投入水平。 一、数据介绍 数据名…...
2024/4/27 8:53:14 - 面试经典算法系列之双指针1 -- 合并两个有序数组
面试经典算法题1 – 合并两个有序数组 LeetCode.88 公众号:阿Q技术站 问题描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#…...
2024/4/27 20:48:48 - python爬取B站视频
参考:https://cloud.tencent.com/developer/article/1768680 参考的代码有点问题,请求头需要修改,上代码: import requests import re # 正则表达式 import pprint import json from moviepy.editor import AudioFileClip, Vid…...
2024/4/27 1:05:11 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/28 13:52:11 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/28 3:28:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/28 13:51:37 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/28 15:57:13 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/28 1:22:35 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57