java视频播放器

http://capricasoftware.co.uk/#/projects/vlcj/tutorial/full-screen

官网上有完整代码教程


注意要先安装系统对应版本64位版本的vjcj

、工程准备

  首先需要下载并安装VLC播放器,然后下载vlcj外部库。

       

  下载slf4j中的slf4j-api-1.7.13.jar、 slf4j- nop-1.7.13.jar

  

   将vlc安装目录下的libvlc.dll、libvlccore.dll 两个文件以及plugins复制到对应的java工程目录下

  

     以下是刚刚配置的截图

  

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

import org.apache.log4j.Logger;

import com.sun.jna.NativeLibrary;

import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.discovery.NativeDiscovery;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

public class MyVideo {
	/*
	 * 通过查找本地路径去找到vlclib
	 */
	private static Logger log = Logger.getLogger("client");
	public static void findLibVlc() {
		boolean found = new NativeDiscovery().discover();
        System.out.println(found);
        System.out.println(LibVlc.INSTANCE.libvlc_get_version());
    }
	
	//设置路径
	private static final String NATIVE_LIBRARY_SEARCH_PATH = "lib/vlcjlib";

    public static void setLibVlc()
    {
        NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), NATIVE_LIBRARY_SEARCH_PATH);
        log.info("version:" + LibVlc.INSTANCE.libvlc_get_version());
    }
    
    public static void main(String[] args) {
        //new NativeDiscovery().discover();
    	setLibVlc();
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Tutorial();
            }
        });
    }
}

class Tutorial {
	
	private static Logger log = Logger.getLogger("client");
	
	private final JFrame frame;

    private final EmbeddedMediaPlayerComponent mediaPlayerComponent;

    

    public Tutorial() {
        frame = new JFrame("My First Media Player");
        frame.setBounds(100, 100, 600, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
        frame.setContentPane(mediaPlayerComponent);
        frame.setVisible(true);
        
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
            	log.info(e+"退出");
                mediaPlayerComponent.release();
                System.exit(0);
                
            }
        });
        log.info("play " + "1.flv");
        mediaPlayerComponent.getMediaPlayer().playMedia("doc/1.flv");
    }
}

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.discovery.NativeDiscovery;

public class Tutorials {

    private final JFrame frame;

    private final EmbeddedMediaPlayerComponent mediaPlayerComponent;

    private final JButton pauseButton;

    private final JButton rewindButton;

    private final JButton skipButton; 

    public static void main(final String[] args) {
        new NativeDiscovery().discover();
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Tutorials("doc/1.wmv");
            }
        });
    }

    public Tutorials(String args) {
        frame = new JFrame("My First Media Player");
        frame.setBounds(100, 100, 600, 400);
        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                mediaPlayerComponent.release();
                System.exit(0);
            }
        });

        JPanel contentPane = new JPanel();
        contentPane.setLayout(new BorderLayout());

        mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
        contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);

        JPanel controlsPane = new JPanel();
        pauseButton = new JButton("Pause");
        controlsPane.add(pauseButton);
        rewindButton = new JButton("Rewind");
        controlsPane.add(rewindButton);
        skipButton = new JButton("Skip");
        controlsPane.add(skipButton);
        contentPane.add(controlsPane, BorderLayout.SOUTH);

        pauseButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                mediaPlayerComponent.getMediaPlayer().pause();
            }
        });

        rewindButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                mediaPlayerComponent.getMediaPlayer().skip(-10000);
            }
        });

        skipButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                mediaPlayerComponent.getMediaPlayer().skip(10000);
            }
        });

        frame.setContentPane(contentPane);
        frame.setVisible(true);

        mediaPlayerComponent.getMediaPlayer().playMedia(args);
    }
}

//import java.awt.BorderLayout;
//import java.awt.event.ActionEvent;
//import java.awt.event.ActionListener;
//import java.awt.event.WindowAdapter;
//import java.awt.event.WindowEvent;
//
//import javax.swing.JButton;
//import javax.swing.JFrame;
//import javax.swing.JOptionPane;
//import javax.swing.JPanel;
//import javax.swing.SwingUtilities;
//
//import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
//import uk.co.caprica.vlcj.discovery.NativeDiscovery;
//import uk.co.caprica.vlcj.player.MediaPlayer;
//import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
//
//public class Tutorials {
//
//    private final JFrame frame;
//
//    private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
//
//    private final JButton pauseButton;
//
//    private final JButton rewindButton;
//
//    private final JButton skipButton;
//
//    public static void main(final String[] args) {
//        new NativeDiscovery().discover();
//        SwingUtilities.invokeLater(new Runnable() {
//            @Override
//            public void run() {
//                new Tutorials(null);
//            }
//        });
//    }
//
//    public Tutorials(String args) {
//        frame = new JFrame("My First Media Player");
//        frame.setBounds(100, 100, 600, 400);
//        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
//        frame.addWindowListener(new WindowAdapter() {
//            @Override
//            public void windowClosing(WindowEvent e) {
//                System.out.println(e);
//                mediaPlayerComponent.release();
//                System.exit(0);
//            }
//        });
//
//        JPanel contentPane = new JPanel();
//        contentPane.setLayout(new BorderLayout());
//
//        mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
//        contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
//
//        JPanel controlsPane = new JPanel();
//        pauseButton = new JButton("Pause");
//        controlsPane.add(pauseButton);
//        rewindButton = new JButton("Rewind");
//        controlsPane.add(rewindButton);
//        skipButton = new JButton("Skip");
//        controlsPane.add(skipButton);
//        contentPane.add(controlsPane, BorderLayout.SOUTH);
//
//        pauseButton.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                mediaPlayerComponent.getMediaPlayer().pause();
//            }
//        });
//
//        rewindButton.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                mediaPlayerComponent.getMediaPlayer().skip(-10000);
//            }
//        });
//
//        skipButton.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                mediaPlayerComponent.getMediaPlayer().skip(10000);
//            }
//        });
//
//        mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
//            @Override
//            public void playing(MediaPlayer mediaPlayer) {
//                SwingUtilities.invokeLater(new Runnable() {
//                    @Override
//                    public void run() {
//                        frame.setTitle(String.format(
//                            "My First Media Player - %s",
//                            mediaPlayerComponent.getMediaPlayer().getMediaMeta().getTitle()
//                        ));
//                    }
//                });
//            }
//
//            @Override
//            public void finished(MediaPlayer mediaPlayer) {
//                SwingUtilities.invokeLater(new Runnable() {
//                    @Override
//                    public void run() {
//                        closeWindow();
//                    }
//                });
//            }
//
//            @Override
//            public void error(MediaPlayer mediaPlayer) {
//                SwingUtilities.invokeLater(new Runnable() {
//                    @Override
//                    public void run() {
//                        JOptionPane.showMessageDialog(
//                            frame,
//                            "Failed to play media",
//                            "Error",
//                            JOptionPane.ERROR_MESSAGE
//                        );
//                        closeWindow();
//                    }
//                });
//            }
//        });
//
//        frame.setContentPane(contentPane);
//        frame.setVisible(true);
//
//        mediaPlayerComponent.getMediaPlayer().playMedia("doc/1.flv");
//    }
//
//    private void closeWindow() {
//        frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
//    }
//}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值