快3网上购买

使用java创建一个简易的视屏播放器

电脑杂谈  发布时间:2019-09-03 01:07:29  来源:网络整理

mp4播放器java版_java jmf播放rtsp视频_mp4播放器java版

最近有个多媒体的作业,要求使用visualC++和opencv编写一个简易的视屏播放器,对于C/C++残疾者而言是不也许的,于是萌生了用java编写的看法。具体心得分享一下。

目标:制作简易视屏播放器

开发软件:eclipse4.5.1;VLC2.2.1

具体内容:完成了视屏的加载、播放、退出的功能;实现了视屏播放过程中控制播放进程;实现播放过程中控制暂停。

最终程序效果图如下:

mp4播放器java版_mp4播放器java版_java jmf播放rtsp视频

开发过程参考学习资源:极客学院视屏教程;

#/projects/vlcj

GitHub

一、环境配置,也是最重要的一步mp4播放器java版,如果开发环境没有配置好的话,其他的事都是瞎扯淡。

1.下载vlc(点击打开下载vlc链接:),下载自己手机平台对应的版本并安装;

2.下载vlcj(#/projects/vlcj),把下载文件解压后将其目录下的

mp4播放器java版_mp4播放器java版_java jmf播放rtsp视频

jna-3。5。2。jar、platform-3。5。2。jar、vlcj-3。8。0。jar(不同版本后缀数字可能会不同)三个文件复制到对应的java项目目录(新建 lib文件夹)下;

3.下载slf4j(点击打开slf4j下载链接),下载文件后解压将其目录下的slf4j-api-1.7.13.jar、

slf4j- nop-1。7。13。jar(不同版本后缀数字可能会不同)两个文件复制到对应的java项目目录(新建 lib文件夹)下;

4. 将vlc安装目录下的libvlc.dll、libvlccore.dll 两个文件或者plugins问佳佳复制到对应的java项目目录下;

mp4播放器java版_java jmf播放rtsp视频_mp4播放器java版

至此mp4播放器java版,环境文件的导入已经基本完成。进入eclipse将lib文件夹下面的5个 .jar 文件添加到工作模式。完成后java项目的目录结构如下:

java工程下的包里是详细的程序实现代码。

二.各种环境文件导入java项目以后还必须配置一下才可还能配置到最后的工作环境。

1.在java项目下新建两个包,分别放置程序主文件和字段文件。在在主程序包下建一个主类,主类的main函数作如下配置:


 public static void main(String[] args) {
  
  //环境配置,将vlc sdk导入到eclipse
  
  //if(RuntimeUtil.isWindows()){     }
  NativeLibrary.addSearchPath(
    RuntimeUtil.getLibVlcLibraryName(), "D:\\Program Files\\VideoLAN\\VLC\\sdk\\lib"); //导入的路径是vlc的安装路径
  Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(),LibVlc.class);
        //System.out.println(LibVlc.INSTANCE.libvlc_get_version());

java jmf播放rtsp视频_mp4播放器java版_mp4播放器java版

}

快3网上购买b保存后运行一下改程序,如果不报错的话则表明开发环境尚未配置完成。如果报错的话可以参照上文提到的参考学习资源解决难题。

三.接下来就是具体的编码环节了,有问题可以参照java学习软件。

具体代码如下:

主文件类PlayerMain:

/*主程序*/
package VideoPlayer.Main;
import java.awt.EventQueue;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.SwingWorker;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import VideoPlayer.Window.Window;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;
public class PlayerMain {
	static Window frame;
	//private static final String NATIVE_LIBRARY_SEARCH_PATH = "D:\\Program Files\\VideoLAN\\VLC\\sdk\\lib";
	public static void main(String[] args) {
		
		//环境配置,将vlc sdk导入到eclipse
		
		//if(RuntimeUtil.isWindows()){					}
		NativeLibrary.addSearchPath(
				RuntimeUtil.getLibVlcLibraryName(), "D:\\Program Files\\VideoLAN\\VLC\\sdk\\lib");	//导入的路径是vlc的安装路径
		Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(),LibVlc.class);
        //System.out.println(LibVlc.INSTANCE.libvlc_get_version());
		//创建主程序界面运行窗体
		EventQueue.invokeLater(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				try{
					frame=new Window();
					frame.setVisible(true);
					//frame.getMediaPlayer().playMedia("F:\\Videos\\Let.mp4");	//直接播放视屏,参数是视屏文件的绝对路径
					frame.getMediaPlayer().prepareMedia("F:\\Videos\\Let_It_Go.mp4");		//控制播放视屏
					new SwingWorker<String, Integer>() {
						@Override
						protected String doInBackground() throws Exception {
							// TODO Auto-generated method stub
							while (true) {	//获取视频播放进度并且按百分比显示
								long total=frame.getMediaPlayer().getLength();
								long curr=frame.getMediaPlayer().getTime();
								float percent=(float)curr/total;
								publish((int)(percent*100));
								Thread.sleep(100);
							}	
							//return null;
						}
						
						protected void process(java.util.List<Integer> chunks) {
							for(int v:chunks){
								frame.getProgressBar().setValue(v);
							} 
						}
					}.execute();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		});
	}
	
	//打开文件
	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 exit() {
		frame.getMediaPlayer().release();
		System.exit(0);
	}
	//实现播放按钮的方法
	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);
	}
	
}

窗体文件类Window:

/*视屏播放器主界面*/
package VideoPlayer.Window;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JSlider;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import VideoPlayer.Main.PlayerMain;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
public class Window extends JFrame{
	
	private JPanel contentPane;	//顶层容器,整个播放页面的容器
	private JMenuBar menuBar;	//菜单栏
	private JMenu mnFile,mnSetting,mnHelp;	//文件菜单
	private JMenuItem mnOpenVideo,mnExit;	//文件菜单子目录,打开视屏、退出
	private JPanel panel;	//控制区域容器
	private JProgressBar progress;	//进度条
	private JPanel progressPanel;	//进度条容器
	private JPanel controlPanel;	//控制按钮容器
	private JButton btnStop,btnPlay,btnPause;	//控制按钮,停止、播放、暂停
	private JSlider slider;		//声音控制块
	
	
	EmbeddedMediaPlayerComponent playerComponent;	//媒体播放器组件
	
	public static void main(String[] args) {
		
	}
	//MainWindow构造方法,创建视屏播放的主界面
	public Window(){
		setTitle("   VideoPlayer   Copyright@2015  by 南柯一梦");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(200,80,900,600);
		contentPane=new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0,0));
		setContentPane(contentPane);
		
		
		/*视频播放窗口中的菜单栏*/
		menuBar=new JMenuBar();
		setJMenuBar(menuBar);
		
		mnFile=new JMenu("文件");		//设置菜单名
		menuBar.add(mnFile);
		mnSetting=new JMenu("设置");
		menuBar.add(mnSetting);
		mnHelp=new JMenu("帮助");
		menuBar.add(mnHelp);
		
		mnOpenVideo =new JMenuItem("打开文件");	//设置文件菜单子目录打开文件
		mnFile.add(mnOpenVideo);
		
		mnExit =new JMenuItem("退出");	//设置文件菜单子目录退出
		mnFile.add(mnExit);
		
		//打开文件
		mnOpenVideo.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				PlayerMain.openVideo();
			}
		});
		
		//退出
		mnExit.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				PlayerMain.exit();
			}
		});
		
		
		/*视屏窗口中播放界面部分*/
		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);
		
		progressPanel=new JPanel();	//实例化进度条容器
		panel.add(progressPanel, BorderLayout.NORTH);
		//添加进度条
		progress=new JProgressBar();	
		progressPanel.add(progress);
		//panel.add(progress,BorderLayout.NORTH);
		progress.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e){		//点击进度条调整视屏播放进度
				int x=e.getX();
				PlayerMain.jumpTo((float)x/progress.getWidth());
			}
		});
		progress.setStringPainted(true);
		
		
		controlPanel=new JPanel();		//实例化控制按钮容器
		panel.add(controlPanel,BorderLayout.SOUTH);
		
		//添加停止按钮
		btnStop=new JButton("停止");
		btnStop.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				PlayerMain.stop();
			}
		});
		controlPanel.add(btnStop);
		
		//添加播放按钮
		btnPlay=new JButton("播放");
		btnPlay.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				PlayerMain.play();
			}
		});
		controlPanel.add(btnPlay);
		
		//添加暂停按钮
		btnPause=new JButton("暂停");
		btnPause.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				PlayerMain.pause();
			}
		});
		controlPanel.add(btnPause);
		
		//添加声音控制块
		slider=new JSlider();
		slider.setValue(80);
		slider.setMaximum(100);
		slider.addChangeListener(new ChangeListener() {
			
			@Override
			public void stateChanged(ChangeEvent e) {
				// TODO Auto-generated method stub
				PlayerMain.setVol(slider.getValue());
			}
		});
		controlPanel.add(slider);
	}
	
	//获取播放媒体实例(某个视频)
	public EmbeddedMediaPlayer getMediaPlayer() {
		return playerComponent.getMediaPlayer();
	}
	
	//获取进度条实例
	public JProgressBar getProgressBar() {
		return progress;
	}
	
}

至此使用java开发简易的视屏播放器就已经完成了。

2015年12月28日 By 南柯一梦


本文来自电脑杂谈,转载请注明本文网址:
http://www.kadakong.com/a/bofangqi/article-121501-1.html

    相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 黄贯中
      黄贯中

      你如果在伊拉克对美国说“关你鸟事”

    • 孙文岩
      孙文岩

      不然不会说出解决男女失衡解决办法是公用妻子

    福建快3开奖 快赢彩票开奖 北京赛车 贵州快3 快三投注网 辽宁福彩网 快赢彩票投注 恒彩彩票开户 快三平台 五分时时彩