java怎么播放视频_如何播放视频文件 java
展開(kāi)全部
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; // 播放器對(duì)象
private Component visualMedia; // 視頻顯示32313133353236313431303231363533e4b893e5b19e31333238666339組件
private Component mediaControl; // 視頻播放控制組件
private Container container; // 主容器
private File mediaFile; //媒體文件
private URL fileURL; //媒體文件URL地址
public VideoPlayDemo() { // 構(gòu)造函數(shù)
super("視頻播放程序"); //調(diào)用父類(lèi)構(gòu)造函數(shù)
container = getContentPane(); //得到窗口容器
JToolBar toobar = new JToolBar(); //實(shí)例化工具欄
JButton openFile = new JButton("打開(kāi)媒體文件"); //實(shí)例化按鈕
toobar.add(openFile); //增加按鈕到工具欄
JButton openURL = new JButton("打開(kāi)網(wǎng)絡(luò)地址");
toobar.add(openURL);
container.add(toobar, BorderLayout.NORTH); //設(shè)置工具欄
openFile.addActionListener(new ActionListener() { //打開(kāi)文件按鈕事件處理
public void actionPerformed(ActionEvent event) {
JFileChooser fileChooser = new JFileChooser(); //實(shí)例化文件選擇器
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//設(shè)置文件打開(kāi)模式為僅打開(kāi)文件
int result = fileChooser.showOpenDialog(VideoPlayDemo.this);//顯示對(duì)話框
if (result == JFileChooser.APPROVE_OPTION) { //得到用戶(hù)行為
mediaFile = fileChooser.getSelectedFile(); //得到選擇的文件
}
if (mediaFile != null) {
try {
fileURL = mediaFile.toURL(); //得到文件的URL地址
} catch (MalformedURLException ex) {
ex.printStackTrace(); //輸出錯(cuò)誤信息
showMessage("打開(kāi)錯(cuò)誤"); //顯示錯(cuò)誤信息
}
startPlayer(fileURL.toString()); //開(kāi)始播放打開(kāi)的文件
}
}
});
openURL.addActionListener(new ActionListener() { //打開(kāi)URL按鈕事件處理
public void actionPerformed(ActionEvent event) {
String addressName =JOptionPane.showInputDialog(VideoPlayDemo.this, "輸入U(xiǎn)RL地址");
if (addressName != null)
startPlayer(addressName); //開(kāi)始播放打開(kāi)的URL
}
});
Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, Boolean.TRUE);
setSize(300, 200); //設(shè)置窗口大小
setVisible(true); //設(shè)置窗口為可視
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關(guān)閉窗口時(shí)退出程序
}
//初始化播放器
public void startPlayer(String mediaLocation) {
if (player != null)
//如果播放器非空則移去先前的播放器組件
if (visualMedia != null)
container.remove(visualMedia); //如果對(duì)象visualMedia非空則移去
if (mediaControl != null) {
container.remove(mediaControl); //如果對(duì)象mediaControl非空則移去
player.close(); //關(guān)閉播放器
}
MediaLocator mediaLocator = new MediaLocator(mediaLocation); //媒體定位器
if (mediaLocator == null) {
showMessage("打開(kāi)文件錯(cuò)誤"); //顯示錯(cuò)誤信息
return;
}
try {
player = Manager.createPlayer(mediaLocator); //得到播放器實(shí)例
player.addControllerListener(new PlayerEventHandler()); //增加播放控制器
player.realize();
} catch (Exception ex) {
ex.printStackTrace();
showMessage("打開(kāi)錯(cuò)誤"); //顯示錯(cuò)誤信息
}
}
//取得媒體組件
public void getMediaComponents() {
visualMedia = player.getVisualComponent(); //取得視頻顯示組件
//如果對(duì)象visualMedia非空則加入到窗口內(nèi)容窗格
if (visualMedia != null) {
container.add(visualMedia, BorderLayout.CENTER);
pack();
}
mediaControl = player.getControlPanelComponent(); //取得播放控制組件
//如果對(duì)象visualMedia非空則加入到窗口內(nèi)容窗格
if (mediaControl != null)
container.add(mediaControl, BorderLayout.SOUTH);
}
//播放器事件處理
private class PlayerEventHandler extends ControllerAdapter {
public void realizeComplete(RealizeCompleteEvent realizeDoneEvent) {
player.prefetch(); //預(yù)取媒體數(shù)據(jù)
}
//完成預(yù)取媒體數(shù)據(jù)后,開(kāi)始播放媒體
public void prefetchComplete(PrefetchCompleteEvent prefetchDoneEvent) {
getMediaComponents();
validate();
player.start(); //開(kāi)始播放媒體
}
//如果媒體播放完畢,重新設(shè)置媒體時(shí)間并停止媒體播放器
public void endOfMedia(EndOfMediaEvent mediaEndEvent) {
player.setMediaTime(new Time(0)); //重新設(shè)置媒體時(shí)間
player.stop(); // 停止媒體播放
}
}
public void showMessage(String s) {
JOptionPane.showMessageDialog(this, s); //顯示提示信息
}
public static void main(String args[]) {
new VideoPlayDemo();
}
}
本回答由提問(wèn)者推薦
已贊過(guò)
已踩過(guò)<
你對(duì)這個(gè)回答的評(píng)價(jià)是?
評(píng)論
收起
總結(jié)
以上是生活随笔為你收集整理的java怎么播放视频_如何播放视频文件 java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: RTSP HTTP流媒体播放器demo
- 下一篇: Rds基于mysql开发的_开发云数据库