利用JMF播放视频

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://zhangjunhd.blog.51cto.com/113473/25474
本文主要使用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();
              }
       }
}

本文出自 “子 孑” 博客,请务必保留此出处http://zhangjunhd.blog.51cto.com/113473/25474

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值