利用JMF播放视频
本文主要使用JMF来实现在一个Applet中播放本地MPEG格式视频文件。并给出一个实例。
author: ZJ 06-11-15
实现具体步骤:
1. 确定视频文件的位置
MediaLocator mrl=new MediaLocator(new java.lang.String(“文件路径和文件名”));
2. 利用Manager.createPlayer创建一个播放器(Player)
Player player=null;
player=Manager.createPlayer(mrl);
3. 使用addControllerListener将此applet注册为播放器的控制器监视器。注册此监视器的目的是只要播放器载入一个媒体事件,那么该applet将会自动调用controllerUpdate方法。
player.addControllerListener(this);
4. 播放
player.start();
5. 停止与释放
player.stop();
player.deallocate();//调用此方法可以释放所有独占资源,这样可以避免其它播放器无法启动。
6. 关闭
player.close();//释放所有资源。
7.
①controllerUpdate方法可以通知applet对播放器的事件作出反应。
②一个播放器的用户接口容器只有在该播放器的状态为Realized时才能显示。
③用户接口容器包括:可视容器(VisualComponent)和控制面板容器(ControlPanelComponent)。
源代码:
PlayerApplet.java
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Component;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
public class PlayerApplet extends Applet implements ControllerListener {
/**
* Playing an MPEG Movie in an Applet
*/
private static final long serialVersionUID = 1L;
Player player = null;
public void init() {
setLayout(new BorderLayout());
MediaLocator mrl = new MediaLocator(new java.lang.String(
"file:///D:/Dvp/workspace/JavaSound/foo.wav"));
try {
player = Manager.createPlayer(mrl);
//System.out.println("test1:" + player);
player.addControllerListener(this);
} catch (Exception e) {
System.err.println("Got exception " + e);
}
}
public void start() {
player.start();
}
public void stop() {
player.stop();
player.deallocate();
}
public void destroy() {
player.close();
}
public synchronized void controllerUpdate(ControllerEvent event) {
if (event instanceof RealizeCompleteEvent) {
Component comp;
if ((comp = player.getVisualComponent()) != null)
add("Center", comp);
if ((comp = player.getControlPanelComponent()) != null)
add("South", comp);
validate();
}
}
}
|