JMF创建播放器

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package graduatedesign;

import java.awt.Component;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.*;

/**
 *
 * @author duguhaotian
 */
public class player extends Frame implements ControllerListener {

    Player p;
    Component vc;

    player(String ss, String mediaurl) {
        super(ss);
        try {
            p = Manager.createPlayer(new MediaLocator(mediaurl));
            /*
             * 创建播放器,MediaLocator确定所需的协议和媒体资源的位置,如果找不到播放器会返回一个NoPlayerException对象。
             */
        } catch (NoPlayerException e) {
            System.out.println("could not find a player.");
            System.exit(-1);
        } catch (java.io.IOException e) {
            System.out.println(e);
            System.exit(-1);
        }
        if (p == null) {
            System.out.println("trouble creating player.");
            System.exit(-1);
        }
        p.addControllerListener(this);  //注册事件监听器
        p.prefetch();   //播放器进入Prefetching状态
    }

    @Override
    public void controllerUpdate(ControllerEvent ce) {
        if (ce instanceof EndOfMediaEvent) {//播放到达终点
            p.setMediaTime(new Time(0));//倒带
            p.start();//重新播放
            return;
        }
        if (ce instanceof PrefetchCompleteEvent) {//播放器处于Prefetched状态
            p.start();//播放
            return;
        }
        if (ce instanceof RealizeCompleteEvent) {//播放器处于Realized状态
            vc = p.getVisualComponent();//返回可视化组件
            if (vc != null) {
                add(vc);
            }
            pack();
            setResizable(false);//窗口大小固定不变
            setVisible(true);//可见
        }
    }

    public static void main(String args[]) {
        
        player nowFrame = new player("player example1", "file:///D:/1.avi");
        nowFrame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

 红色部分的简介:文件是在D盘下的1.avi。一定要加一个file:///。

posted @ 2013-03-22 21:25  孤独~根号三  阅读(243)  评论(0编辑  收藏  举报