java play demo_VideoPlayDemo

import java.awt.BorderLayout;

import java.awt.Component;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.File;

import java.net.MalformedURLException;

import java.net.URL;

import javax.media.ControllerAdapter;

import javax.media.EndOfMediaEvent;

import javax.media.Manager;

import javax.media.MediaLocator;

import javax.media.Player;

import javax.media.PrefetchCompleteEvent;

import javax.media.RealizeCompleteEvent;

import javax.media.Time;

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JToolBar;

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()); //开始播放打开的文件

System.out.println(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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值