javax.media錯誤解決 播放器代碼

javax.media錯誤 解決 小白解決方法

在用eclipse編寫視頻播放器的時候出現無法解析javax.media

這裏寫圖片描述

解決辦法:
首先 下載 JMF-2.1.1e 下載地址
打開eclipse項目,新建文件夾
這裏寫圖片描述

命名爲lib如圖:

這裏寫圖片描述

把文件夾JMF-2.1.1e中的lib文件夾中的四個文件customizer,jmf,mediaplayer,multiplayer用鼠標直接全部拖進Eclipse中剛纔新建lib文件中,如圖所示

這裏寫圖片描述

這裏寫圖片描述

接下來添加jar

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

選擇下載的jar,確定,確定

這樣也就完成了
至此錯誤也就沒有了。

附:播放器代碼

package test;
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; // 播放器對象
    private Component visualMedia; // 視頻顯示組件
    private Component mediaControl; // 視頻播放控制組件
    private Container container; // 主容器
    private File mediaFile; //媒體文件
    private URL fileURL; //媒體文件URL地址

    public VideoPlayDemo() { // 構造函數
        super("視頻播放程序"); //調用父類構造函數

        container = getContentPane(); //得到窗口容器
        JToolBar toobar = new JToolBar(); //實例化工具欄
        JButton openFile = new JButton("打開媒體文件"); //實例化按鈕
        toobar.add(openFile); //增加按鈕到工具欄
        JButton openURL = new JButton("打開網絡地址");
        toobar.add(openURL);
        container.add(toobar, BorderLayout.NORTH); //設置工具欄

        openFile.addActionListener(new ActionListener() { //打開文件按鈕事件處理
            public void actionPerformed(ActionEvent event) {
                JFileChooser fileChooser = new JFileChooser(); //實例化文件選擇器
                fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//設置文件打開模式爲僅打開文件              
                int result = fileChooser.showOpenDialog(VideoPlayDemo.this);//顯示對話框             
                if (result == JFileChooser.APPROVE_OPTION) { //得到用戶行爲
                    mediaFile = fileChooser.getSelectedFile(); //得到選擇的文件
                }
                if (mediaFile != null) {
                    try {
                        fileURL = mediaFile.toURL(); //得到文件的URL地址
                    } catch (MalformedURLException ex) {
                        ex.printStackTrace(); //輸出錯誤信息
                        showMessage("打開錯誤"); //顯示錯誤信息
                    }
                    startPlayer(fileURL.toString()); //開始播放打開的文件
                }
            }
        });

        openURL.addActionListener(new ActionListener() { //打開URL按鈕事件處理
            public void actionPerformed(ActionEvent event) {
                String addressName =JOptionPane.showInputDialog(VideoPlayDemo.this, "輸入URL地址");
                if (addressName != null)
                    startPlayer(addressName); //開始播放打開的URL
            }
        });

        Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, Boolean.TRUE);

        setSize(300, 200); //設置窗口大小
        setVisible(true); //設置窗口爲可視
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關閉窗口時退出程序
    }
    //初始化播放器
    public void startPlayer(String mediaLocation) {
        if (player != null)
            //如果播放器非空則移去先前的播放器組件
            if (visualMedia != null)
                container.remove(visualMedia); //如果對象visualMedia非空則移去
        if (mediaControl != null) {
            container.remove(mediaControl); //如果對象mediaControl非空則移去
            player.close(); //關閉播放器
        }
        MediaLocator mediaLocator = new MediaLocator(mediaLocation); //媒體定位器
        if (mediaLocator == null) {
            showMessage("打開文件錯誤"); //顯示錯誤信息
            return;
        }
        try {
            player = Manager.createPlayer(mediaLocator); //得到播放器實例
            player.addControllerListener(new PlayerEventHandler()); //增加播放控制器
            player.realize();
        } catch (Exception ex) {
            ex.printStackTrace();
            showMessage("打開錯誤"); //顯示錯誤信息
        }

    }
    //取得媒體組件
    public void getMediaComponents() {
        visualMedia = player.getVisualComponent(); //取得視頻顯示組件

        //如果對象visualMedia非空則加入到窗口內容窗格
        if (visualMedia != null) {
            container.add(visualMedia, BorderLayout.CENTER);
            pack();
        }

        mediaControl = player.getControlPanelComponent(); //取得播放控制組件

        //如果對象visualMedia非空則加入到窗口內容窗格
        if (mediaControl != null)
            container.add(mediaControl, BorderLayout.SOUTH);

    }

    //播放器事件處理
    private class PlayerEventHandler extends ControllerAdapter {

        public void realizeComplete(RealizeCompleteEvent realizeDoneEvent) {
            player.prefetch(); //預取媒體數據
        }

        //完成預取媒體數據後,開始播放媒體
        public void prefetchComplete(PrefetchCompleteEvent prefetchDoneEvent) {
            getMediaComponents();
            validate();
            player.start(); //開始播放媒體
        }

        //如果媒體播放完畢,重新設置媒體時間並停止媒體播放器
        public void endOfMedia(EndOfMediaEvent mediaEndEvent) {
            player.setMediaTime(new Time(0)); //重新設置媒體時間
            player.stop(); // 停止媒體播放
        }
    }

    public void showMessage(String s) {
        JOptionPane.showMessageDialog(this, s); //顯示提示信息
    }

    public static void main(String args[]) {
        new VideoPlayDemo();
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章