import javax.media.Manager;爆红
时间: 2024-02-01 10:12:31 浏览: 24
这个错误通常是由于缺少Java Media Framework (JMF)的库文件所致。你可以从Oracle官网下载JMF,并将其添加到你的项目中,以解决此问题。以下是下载链接:https://www.oracle.com/technetwork/java/javase/download-142937.html
相关问题
java如何录屏,要求每隔一段时间自动保存为视频文件。需要哪些包
Java可以使用Java AWT Robot类和Java Media Framework API实现屏幕录制。使用Robot类可以捕获屏幕上的图像,使用Java Media Framework API可以将这些图像编码为视频格式。
需要使用的包有:
- java.awt.Robot:用于捕获屏幕上的图像。
- javax.media.*:Java Media Framework API,用于将捕获的图像编码为视频格式。
以下是一个简单的Java屏幕录制代码示例,每隔10秒自动保存一次视频文件:
```
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.imageio.ImageIO;
import javax.media.Buffer;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
public class ScreenRecorder {
private static final int FRAME_RATE = 30;
private static final int SECONDS_BETWEEN_SAVES = 10;
private static final String FILENAME_FORMAT = "yyyy-MM-dd_HH-mm-ss";
private static final String FILE_EXTENSION = "avi";
public static void main(String[] args) throws Exception {
SimpleDateFormat dateFormat = new SimpleDateFormat(FILENAME_FORMAT);
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
Robot robot = new Robot();
Player player = Manager.createRealizedPlayer(new MediaLocator("vfw://0"));
player.start();
FrameGrabbingControl frameGrabber = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
int i = 0;
while (true) {
BufferedImage image = robot.createScreenCapture(screenRect);
Buffer buffer = frameGrabber.grabFrame();
BufferToImage bufferToImage = new BufferToImage((VideoFormat) buffer.getFormat());
ImageIO.write(image, "png", new File(dateFormat.format(new Date()) + ".png"));
if (i % (FRAME_RATE * SECONDS_BETWEEN_SAVES) == 0) {
ImageIO.write(image, FILE_EXTENSION, new File(dateFormat.format(new Date()) + "." + FILE_EXTENSION));
}
i++;
Thread.sleep(1000 / FRAME_RATE);
}
}
}
```
该代码使用Robot类捕获屏幕上的图像,并使用FrameGrabbingControl从Java Media Framework API中获取视频帧。每隔10秒,它将当前图像保存为视频文件。请注意,此代码使用了一个名为“vfw://0”的MediaLocator,这是Windows上的Video for Windows驱动程序。如果您使用的是其他平台或驱动程序,则需要更改这个值。
meidaplayer的Java在线播放
以下是一个基于Java的MediaPlayer在线播放代码示例:
```java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.Time;
public class MediaPlayerExample extends JPanel implements ControllerListener {
private static final long serialVersionUID = 1L;
private Player player;
private Component video;
private Component control;
public MediaPlayerExample() {
try {
setPreferredSize(new Dimension(640, 360));
setLayout(new BorderLayout());
URL url = new URL("http://example.com/video.mp4");
player = Manager.createPlayer(url);
player.addControllerListener(this);
player.realize();
video = player.getVisualComponent();
if (video != null) {
add(video, BorderLayout.CENTER);
}
control = player.getControlPanelComponent();
if (control != null) {
add(control, BorderLayout.SOUTH);
}
} catch (MalformedURLException e) {
System.err.println("Invalid media URL: " + e);
} catch (NoPlayerException e) {
System.err.println("Failed to create media player: " + e);
} catch (IOException e) {
System.err.println("Failed to initialize media player: " + e);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("MediaPlayer Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new MediaPlayerExample());
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
});
}
public void controllerUpdate(ControllerEvent event) {
if (event.getSource() == player && event instanceof EndOfMediaEvent) {
player.setMediaTime(new Time(0));
player.start();
}
}
}
```
在这个示例中,我们使用Java的`javax.media`包来实现MediaPlayer在线播放。在构造方法中,我们初始化了一个URL对象,用于指定视频文件的URL。然后,我们使用Manager.createPlayer()方法创建一个Player对象,并将其添加为ControllerListener,以便在播放状态发生变化时接收通知。接着,我们调用Player.realize()方法来准备播放器,并获取视频组件和控制面板组件,并将它们添加到面板中。
在main()方法中,我们使用SwingUtilities.invokeLater()方法来在事件分派线程中创建并显示GUI。在windowClosing()方法中,我们调用System.exit()方法来退出程序。
在controllerUpdate()方法中,我们检查事件源是否为Player,并且事件类型是否为EndOfMediaEvent。如果是,我们将媒体时间设置为0,然后重新开始播放。