Java多媒体与Applet开发指南
立即解锁
发布时间: 2025-08-20 00:52:14 订阅数: 11 


Java网络编程入门与实践
# Java多媒体与Applet开发指南
## 1. Java多媒体框架
### 1.1 简单声音播放界面
在简单的声音播放界面中,我们可以通过以下代码实现基本的播放、停止和循环功能:
```java
buttonPanel.add(play);
buttonPanel.add(stop);
buttonPanel.add(loop);
add(buttonPanel,BorderLayout.SOUTH);
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == play)
clip.play();
if (event.getSource() == stop)
clip.stop();
if (event.getSource() == loop)
clip.loop();
}
```
### 1.2 Java媒体框架(JMF)
播放视频文件需要下载额外的API,即Java媒体框架(JMF)。可以从以下URL免费下载:[http://www.oracle.com/technetwork/java/javase/download-142937.html](http://www.oracle.com/technetwork/java/javase/download-142937.html)。需要注意的是,该API已经十多年没有更新,没有64位版本,使用时必须使用32位版本。
#### 1.2.1 JMF的功能
JMF中的`Player`类能够播放多种音频和视频格式,如AVI(.avi文件)、GSM(.gsm文件)、MPEG - 1(.mpg文件)和Apple QuickTime(.mov文件),但不能显示图像文件。该类位于`javax.media`包中,应用程序需要导入此包。
#### 1.2.2 播放音视频文件的基本步骤
以下是使用JMF播放音视频文件的基本步骤:
1. 接受文件名(如果文件与程序不在同一目录,需包含路径),创建`File`对象,将文件名作为构造函数的唯一参数。
2. 使用`File`类的`exists`方法检查文件是否存在。
3. 通过`Manager`类(同样来自`javax.media`包)的静态方法`createPlayer`创建`Player`对象。该方法接受一个URL参数,可通过`File`类的`toURL`方法生成。
4. 使用异常处理机制(捕获任何`Exception`对象)检查文件类型是否有效。
5. 为媒体播放器提供`ControllerListener`(`javax.media`包)。
6. 为上述`ControllerListener`对象的`controllerUpdate`方法提供定义。该方法接受一个`ControllerEvent`参数,通常会通过`Player`方法`getVisualComponent`和`getControlPanelComponent`生成所需的视觉和/或控制面板组件,然后将这些组件添加到内容面板。最后,应在内容面板上执行`doLayout`方法。
7. 执行`Player`对象的`start`方法。
#### 1.2.3 示例代码
以下是一个创建`Player`对象的示例程序,用户输入文件名即可播放相应的音频或视频剪辑:
```java
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.media.*;
public class MediaPlayer extends JFrame
implements ActionListener, ControllerListener
{
private JLabel prompt;
private JTextField fileName;
private JPanel inputPanel;
private File file;
private Player player;
public static void main(String args[])
{
MediaPlayer frame = new MediaPlayer();
frame.setSize(600, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public MediaPlayer ()
{
setTitle( "Java Media Player Frame" );
inputPanel = new JPanel();
prompt = new JLabel("Audio/video file name: ");
fileName = new JTextField(25);
inputPanel.add(prompt);
inputPanel.add(fileName);
add(inputPanel,BorderLayout.NORTH);
fileName.addActionListener(this);
}
public void actionPerformed(ActionEvent event)
{
try
{
getFile();
createPlayer();
}
catch(FileNotFoundException fnfEx)
{
JOptionPane.showMessageDialog(this,
"File not found!", "Invalid file name",
JOptionPane.ERROR_MESSAGE);
}
catch (Exception ex)
{
JOptionPane.showMessageDialog(this,
"Unable to load file!", "Invalid file type",
JOptionPane.ERROR_MESSAGE );
}
}
private void getFile() throws FileNotFoundException
{
file = new File(fileName.getText());
if (!file.exists())
throw new FileNotFoundException();
}
private void createPlayer() throws Exception
{
player = Manager.createPlayer(file.toURL());
player.addControllerListener(this);
player.start();
fileName.setEnabled(false);
}
public void controllerUpdate(ControllerEvent event)
{
Container pane = getContentPane();
if (event instanceof RealizeCompleteEvent)
{
Component visualComponent =
player.getVisualComponent();
if (visualComponent != null)
pane.add(visualComponent,
BorderLayout.CENTER);
Component controlsComponent =
player.getControlPanelComponent();
if (controlsComponent != null)
pane.add(controlsComponent,
BorderLayout.SOUTH);
pane.doLayout();
}
}
}
```
#### 1.2.4 关闭Player对象的步骤
如果要加载后续文件,需要通过以下步骤关闭之前的`Player`对象:
1. 通过`getVisualComponent`和`g
0
0
复制全文
相关推荐










