日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java课程设计视频播放器_在Java实现视频播放器(vlc)

發布時間:2023/12/20 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java课程设计视频播放器_在Java实现视频播放器(vlc) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習Java幾個月,剛剛入門。昨天看到極客學院的Java的入門視頻最后有一個簡易播放器的制作,因為最近學校要做一個項目,正好需要加入一個視頻播放器,就按照視頻的方法來做,但是在做時發現N多問題,都是在Windows下特殊的問題,希望可以幫助到需要的人。

這里給出極客學院的視頻鏈接。

大家會在Windows下遇到的問題居多,因為極客學院的視頻里用的機器是MAC所以在環境搭建的時候會和Windows有很多不一樣的地方,所以我把我在實現過程中遇到的問題都總結一下。

此文章適合初學者學習,如有哪里不足請大家指出來。

搭建環境

環境搭建也是最重要的一步,如果環境都沒有還談何開發。

1.首先需要下載vlc播放器,可以在官網下載或者直接百度搜索下載。

請注意64位Windows系統一定要下載64位vlc播放器,否則就找不到否則在建立主程序時就會報如下的錯誤。

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'libvlc': JNA native support (win32-amd64/libvlc.dll) not found in resource path (F:\我的文檔\JAVATEMP\MyVideoPlayer\bin;F:\我的文檔\JAVATEMP\MyVideoPlayer\lib\jna-3.5.2.jar;F:\我的文檔\JAVATEMP\MyVideoPlayer\lib\platform-3.5.2.jar;F:\我的文檔\JAVATEMP\MyVideoPlayer\lib\vlcj-3.0.1.jar)

at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:220)

at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:322)

at com.sun.jna.Library$Handler.(Library.java:142)

at com.sun.jna.Native.loadLibrary(Native.java:387)

at com.sun.jna.Native.loadLibrary(Native.java:366)

at VideoPlayer.main.PlayerMain.main(PlayerMain.java:25)

此錯誤就說明你下載的vlc播放器不是對應你系統的位數。

在官網下載的話好像都是32位的所以這個坎讓我過的非常頭疼。我在網上找到了vlc64位版,在此貼出下載地址。

2.下載完vlc播放器之后還需下載vlcj用里面的jar包來驅動vlc,這里給出vlcj的官網和下載地址。

如果上述下載地址失效,請進入官網

然后往下拉

紅線標注的地方下載。

之后再下載slf4j,下載鏈接。

3.工具都準備好之后就開始著手搭建環境。

首先在你準備的工程下導入vlcj中的jna-4.1.0.jar,jna-platform-4.1.0.jar,vlcj-3.10.1.jar 和slf4j中的。如圖:

如果不會導入jar包的話請看極客學院教學入門視頻,索引為5.1.3外部庫的導入與使用。

在你下載的vlc包的目錄中找到libvlc.dll和libvlccore.dll這兩個文件和plugins文件夾,把他們復制到你的Java項目中。

建立完整后的Java項目結構應該為

其中多出一個包,我也不知道是什么時候進去的,不用在意。

在開始前需要先開始寫出主函數驅動起來vlc播放器。其代碼如下:

public class PlayerMain {

public static void main(String[] args) {

NativeLibrary.addSearchPath(

//此處的路徑是你安裝vlc的路徑加上sdk和lib下面會給出詳細解釋

RuntimeUtil.getLibVlcLibraryName(), "d:\\VLC\\sdk\\lib");

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

}

}

我在輸入路徑的時候只輸入到我的安裝目錄,比如我安裝到D盤下的VLC文件夾下,如果在上述代碼中寫在"D:\\VLC"就會報錯。一定要在你安裝的主目錄后面加上"\\sdk\\lib",比如我在添加之后就變為"D:\\VLC\\sdk\\lib",這和MAC系統是不同的請注意。

把主函數下的代碼復制進去后會在幾個句子下飄紅線,說明你還沒有導包,把鼠標放到紅線下選擇第一個解決方法就自動導包了,在導包完成和改好目錄后就可以嘗試運行 了。雖然不會發生任何的事,但是只要不報錯就說明你的環境配置成功了,接下來就可以著手開發自己的播放器程序了。

開發代碼

給出我做好的簡易播放器的截圖,大家可以根據自己的需要自己設計。

下面貼出我的代碼,僅供參考:

import java.awt.EventQueue;

import java.io.File;

import javax.swing.JFileChooser;

import javax.swing.SwingWorker;

import com.LaoZhao.VideoPlayer.view.MyWindow;

import com.sun.jna.Native;

import com.sun.jna.NativeLibrary;

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

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

public class PlayerMain {

static MyWindow frame;

public static void main(String[] args) {

NativeLibrary.addSearchPath(

RuntimeUtil.getLibVlcLibraryName(), "d:\\VLC\\sdk\\lib");

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

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

frame = new MyWindow();

frame.setVisible(true);

frame.getMediaPlayer().prepareMedia("d:\\HTML5播放器對比Flash插件.mp4");

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 exit(){

frame.getMediaPlayer().release();

System.exit(0);

}

}

import java.awt.BorderLayout;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import com.LaoZhao.VideoPlayer.main.PlayerMain;

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

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

import javax.swing.JButton;

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 javax.swing.event.ChangeListener;

import javax.swing.event.ChangeEvent;

public class MyWindow extends JFrame {

/**

*

*/

private static final long serialVersionUID = 1L;

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 menu;

private JMenuItem openmenu;

private JMenuItem closemenu;

private JSlider slider;

/**

* Launch the application.

*/

public static void main(String[] args) {

}

/**

* Create the frame.

*/

public MyWindow() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 640, 480);

menuBar = new JMenuBar();

setJMenuBar(menuBar);

menu = new JMenu("\u6587\u4EF6");

menuBar.add(menu);

openmenu = new JMenuItem("\u6253\u5F00");

menu.add(openmenu);

closemenu = new JMenuItem("\u9000\u51FA");

menu.add(closemenu);

openmenu.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

PlayerMain.openVideo();

}

});

closemenu.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

PlayerMain.exit();

}

});

contentPane = new JPanel();

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

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

setContentPane(contentPane);

JPanel Videopanel = new JPanel();

contentPane.add(Videopanel, BorderLayout.CENTER);

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

playerComponent = new EmbeddedMediaPlayerComponent();

Videopanel.add(playerComponent);

panel = new JPanel();

Videopanel.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) {

PlayerMain.setvol(slider.getValue());

}

});

controlpanel.add(slider);

progress = new JProgressBar();

progress.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

int x=e.getX();

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

}

});

progress.setStringPainted(true);

panel.add(progress, BorderLayout.NORTH);

btnPause.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

PlayerMain.pause();

}

});

btnPlay.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

PlayerMain.play();

}

});

btnStop.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

PlayerMain.stop();

}

});

}

public EmbeddedMediaPlayer? getMediaPlayer() {

return playerComponent.getMediaPlayer();

}

public JProgressBar getProgressBar(){

return progress;

}

}

第一次撰寫技術性文章,歡迎指出我的錯誤。

總結

以上是生活随笔為你收集整理的java课程设计视频播放器_在Java实现视频播放器(vlc)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。