石林java_视频播放系统

1、工程的准备

package com.jikexueyuan.videoplayer.main;

import java.awt.EventQueue;

import java.io.File;

import javax.swing.JFileChooser;

import javax.swing.SwingWorker;

import uk.co.caprica.vlcj.binding.LibVlc;

import uk.co.caprica.vlcj.runtime.RuntimeUtil;

import com.jikexueyuan.videoplayer.views.MainWindow;

import com.sun.jna.Native;

import com.sun.jna.NativeLibrary;

public class PlayMain {

static MainWindow frame;

public static void main(String[] args) {

if (RuntimeUtil.isMac()) {

NativeLibrary.addSearchPath(

RuntimeUtil.getLibVlcLibraryName(),

"/Applications/VLC.app/Contents/MacOS/lib"

);

}else if (RuntimeUtil.isWindows()) {

NativeLibrary.addSearchPath(

RuntimeUtil.getLibVlcLibraryName(),

"C:\ProgrameFiles\VideoLan\vlc\lib"

);

}else if (RuntimeUtil.isNix()) {

NativeLibrary.addSearchPath(

RuntimeUtil.getLibVlcLibraryName(),

"/home/linux/vlc/install/lib"

);

}

Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

frame = new MainWindow();

frame.setVisible(true);

String options[] = {"--subsdec-encoding=GB18030"};

new SwingWorker() {

@Override

protected String doInBackground() throws Exception {

while (true) {

long total = frame.getMediaPlayer().getLength();

long curr = frame.getMediaPlayer().getTime();

float percent = (float)curr/total;

publish((int)(percent*100));

Thread.sleep(100);

}

}

protected void process(java.util.List chunks) {

for (int v : chunks) {

frame.getProgressBar().setValue(v);

}

};

}.execute();

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

public static void play() {

frame.getMediaPlayer().play();

}

public static void pause() {

frame.getMediaPlayer().pause();

}

public static void stop() {

frame.getMediaPlayer().stop();

}

public static void jumpTo(float to) {

frame.getMediaPlayer().setTime((long)

(to*frame.getMediaPlayer().getLength()));

}

public static void setVol(int v) {

frame.getMediaPlayer().setVolume(v);

}

public static void openVideo() {

JFileChooser chooser = new JFileChooser();

int v = chooser.showOpenDialog(null);

if (v == JFileChooser.APPROVE_OPTION) {

File file = chooser.getSelectedFile();

frame.getMediaPlayer().playMedia(file.getAbsolutePath());

}

}

public static void openSubtitle() {

JFileChooser chooser = new JFileChooser();

int v = chooser.showOpenDialog(null);

if (v == JFileChooser.APPROVE_OPTION) {

File file = chooser.getSelectedFile();

frame.getMediaPlayer().setSubTitleFile(file);

}

}

public static void exit() {

frame.getMediaPlayer().release();

System.exit(0);

}

}

package com.jikexueyuan.videoplayer.views;

import java.awt.BorderLayout;

import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import

uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;

import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;

import javax.swing.JButton;

import com.jikexueyuan.videoplayer.main.PlayMain;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JProgressBar;

import javax.swing.JMenuBar;

import javax.swing.JMenu;

import javax.swing.JMenuItem;

import javax.swing.JSlider;

import java.beans.PropertyChangeListener;

import java.beans.PropertyChangeEvent;

import javax.swing.event.ChangeListener;

import javax.swing.event.ChangeEvent;

public class MainWindow extends JFrame {

private JPanel contentPane;

EmbeddedMediaPlayerComponent playerComponent;

private JPanel panel;

private JButton btnPlay;

private JButton btnPause;

private JButton btnStop;

private JPanel controlPanel;

private JProgressBar progress;

private JMenuBar menuBar;

private JMenu mnFile;

private JMenuItem mntmOpenVideo;

private JMenuItem mntmOpenSubtitle;

private JMenuItem mntmExit;

private JSlider slider;

/**

* Launch the application.

*/

public static void main(String[] args) {

}

/**

* Create the frame.

*/

public MainWindow() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 616, 466);

menuBar = new JMenuBar();

setJMenuBar(menuBar);

mnFile = new JMenu("File");

menuBar.add(mnFile);

mntmOpenVideo = new JMenuItem("Open Video...");

mnFile.add(mntmOpenVideo);

mntmOpenSubtitle = new JMenuItem("Open Subtitle...");

mnFile.add(mntmOpenSubtitle);

mntmExit = new JMenuItem("Exit");

mnFile.add(mntmExit);

mntmOpenVideo.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

PlayMain.openVideo();

}

});

mntmOpenSubtitle.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

PlayMain.openSubtitle();

}

});

mntmExit.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

PlayMain.exit();

}

});

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

contentPane.setLayout(new BorderLayout(0, 0));

setContentPane(contentPane);

JPanel videopane = new JPanel();

contentPane.add(videopane, BorderLayout.CENTER);

videopane.setLayout(new BorderLayout(0, 0));

playerComponent = new EmbeddedMediaPlayerComponent();

videopane.add(playerComponent);

panel = new JPanel();

videopane.add(panel, BorderLayout.SOUTH);

panel.setLayout(new BorderLayout(0, 0));

controlPanel = new JPanel();

panel.add(controlPanel);

btnStop = new JButton("Stop");

controlPanel.add(btnStop);

btnPlay = new JButton("Play");

controlPanel.add(btnPlay);

btnPause = new JButton("Pause");

controlPanel.add(btnPause);

slider = new JSlider();

slider.setValue(100);

slider.setMaximum(120);

slider.addChangeListener(new ChangeListener() {

public void stateChanged(ChangeEvent e) {

PlayMain.setVol(slider.getValue());

}

});

controlPanel.add(slider);

progress = new JProgressBar();

progress.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

int x = e.getX();

PlayMain.jumpTo((float)x/progress.getWidth());

}

});

progress.setStringPainted(true);

panel.add(progress, BorderLayout.NORTH);

btnPause.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

PlayMain.pause();

}

});

btnPlay.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent arg0) {

PlayMain.play();

}

});

btnStop.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

PlayMain.stop();

}

});

}

public EmbeddedMediaPlayer getMediaPlayer() {

return playerComponent.getMediaPlayer();

}

public JProgressBar getProgressBar() {

return progress;

}

}

2.实验体会:

这次实验总的来说有点困难,调试了很多次,不过还是有收获的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值