今天逛论坛看到一段不错的程序,视频播放程序

import java.awt.*;  
import java.awt.event.*;  
import java.io.*;  
import java.net.*;  
import javax.swing.*;  
import javax.media.*;  
 
// 视频播放程序  
 
public class VideoPlayDemo extends JFrame { private Player player; // 播放器对象  
private Component visualMedia; // 视频显示组件  
private Component mediaControl; // 视频播放控制组件  
private Container container; // 主容器  
private File mediaFile; //媒体文件  
private URL fileURL; //媒体文件URL地址  
 
public VideoPlayDemo() { // 构造函数  
     super("视频播放程序"); //调用父类构造函数  
 
      container
= getContentPane(); //得到窗口容器  
      JToolBar toobar = new JToolBar(); //实例化工具栏  
      JButton openFile = new JButton("打开媒体文件"); //实例化按钮  
      toobar.add(openFile); //增加按钮到工具栏  
      JButton openURL = new JButton("打开网络地址");  
      toobar.add(openURL);  
      container.add(toobar, BorderLayout.NORTH);
//设置工具栏  
     
      openFile.addActionListener(
new ActionListener() { //打开文件按钮事件处理  
           public void actionPerformed(ActionEvent event) {  
                JFileChooser fileChooser
= new JFileChooser(); //实例化文件选择器  
                fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//设置文件打开模式为仅打开文件      
                int result = fileChooser.showOpenDialog(VideoPlayDemo.this);//显示对话框      
                if (result == JFileChooser.APPROVE_OPTION) { //得到用户行为  
                    mediaFile = fileChooser.getSelectedFile(); //得到选择的文件  
                }  
               
if (mediaFile != null) {  
                   
try {  
                        fileURL
= mediaFile.toURL(); //得到文件的URL地址  
                    } catch (MalformedURLException ex) {  
                          ex.printStackTrace();
//输出错误信息  
                          showMessage("打开错误"); //显示错误信息  
                    }  
                    startPlayer(fileURL.toString());
//开始播放打开的文件  
                }  
           }  
      });  
     
      openURL.addActionListener(
new ActionListener() { //打开URL按钮事件处理  
       public void actionPerformed(ActionEvent event) {  
        String addressName
=JOptionPane.showInputDialog(VideoPlayDemo.this, "输入URL地址");  
       
if (addressName != null)  
         startPlayer(addressName);
//开始播放打开的URL  
       }  
      });  
 
      Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, Boolean.TRUE);  
     
      setSize(
300, 200); //设置窗口大小  
      setVisible(true); //设置窗口为可视  
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序  
}  

//初始化播放器  
public void startPlayer(String mediaLocation) {  
 
if (player != null)  
  
//如果播放器非空则移去先前的播放器组件  
   if (visualMedia != null)  
    container.remove(visualMedia);
//如果对象visualMedia非空则移去  
  if (mediaControl != null) {  
   container.remove(mediaControl);
//如果对象mediaControl非空则移去  
   player.close(); //关闭播放器  
  }  
  MediaLocator mediaLocator
= new MediaLocator(mediaLocation); //媒体定位器  
  if (mediaLocator == null) {  
   showMessage(
"打开文件错误"); //显示错误信息  
   return;  
  }  
 
try {  
   player
= Manager.createPlayer(mediaLocator); //得到播放器实例  
   player.addControllerListener(new PlayerEventHandler()); //增加播放控制器  
   player.realize();  
  }
catch (Exception ex) {  
   ex.printStackTrace();  
   showMessage(
"打开错误"); //显示错误信息  
  }  
 
}  


//取得媒体组件  
public void getMediaComponents() {  
  visualMedia
= player.getVisualComponent(); //取得视频显示组件  
 
 
//如果对象visualMedia非空则加入到窗口内容窗格  
  if (visualMedia != null) {  
   container.add(visualMedia, BorderLayout.CENTER);  
   pack();  
  }  
 
  mediaControl
= player.getControlPanelComponent(); //取得播放控制组件  
 
 
//如果对象visualMedia非空则加入到窗口内容窗格  
  if (mediaControl != null)  
   container.add(mediaControl, BorderLayout.SOUTH);  
 
}  
 
//播放器事件处理  
private class PlayerEventHandler extends ControllerAdapter {  
 
     
public void realizeComplete(RealizeCompleteEvent realizeDoneEvent) {  
       player.prefetch();
//预取媒体数据  
      }  
     
     
//完成预取媒体数据后,开始播放媒体  
      public void prefetchComplete(PrefetchCompleteEvent prefetchDoneEvent) {  
       getMediaComponents();  
       validate();  
       player.start();
//开始播放媒体  
      }  
     
     
//如果媒体播放完毕,重新设置媒体时间并停止媒体播放器  
      public void endOfMedia(EndOfMediaEvent mediaEndEvent) {  
       player.setMediaTime(
new Time(0)); //重新设置媒体时间  
       player.stop(); // 停止媒体播放  
      }  
}  
   
public void showMessage(String s) {  
  JOptionPane.showMessageDialog(
this, s); //显示提示信息  
}  
 
public static void main(String args[]) {  
 
new VideoPlayDemo();  
}  
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值