hi_girl_ 2016-06-03 10:25 采纳率: 50%
浏览 1668
已结题

JMF做的播放器不能播放东西

package du1;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import javax.media.*;

//@SuppressWarnings({ "restriction", "unused" })

public class JMFSample implements ControllerListener {

public static void main(String[] args) {

JMFSample sp = new JMFSample();

sp.play();

}

private Player mediaPlayer;  
private Frame f;  
private Player player;  
private Panel panel;  
private Component visual;  
private Component control = null;      
public void play(){  
    f = new Frame("JMF Sample1");  
    f.addWindowListener(new WindowAdapter() {  
        public void windowClosing(WindowEvent we) {  
            if(player != null) {  
                player.close();  
            }  
            System.exit(0);  
        }  
    });  
    f.setSize(500,400);  

    f.setVisible(true);  
    URL url = null;  
    try {  
        //准备一个要播放的视频文件的URL  
        url = new URL("file:/c:/Users/老太爷/Desktop/1.mpg");  
    } catch (MalformedURLException e) {  
        e.printStackTrace();  
    }         
    try {  
        //通过调用Manager的createPlayer方法来创建一个Player的对象  
        //这个对象是媒体播放的核心控制对象  
        player = Manager.createPlayer(url);  
    } catch (NoPlayerException e1) {  
        e1.printStackTrace();  
    } catch (IOException e1) {  
        e1.printStackTrace();  
    }   

    //对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作  
    player.addControllerListener(this);  

    //让player对象进行相关的资源分配  
    player.realize();  
}  

private int videoWidth = 0;  
private int videoHeight = 0;  
private int controlHeight = 30;  
private int insetWidth = 10;  
private int insetHeight = 30;  

//监听player的相关事件  
public void controllerUpdate(ControllerEvent ce) {  
    if (ce instanceof RealizeCompleteEvent) {  
        //player实例化完成后进行player播放前预处理  
        player.prefetch();  
    } else if (ce instanceof PrefetchCompleteEvent) {  
        if (visual != null)  
            return;  

        //取得player中的播放视频的组件,并得到视频窗口的大小  
        //然后把视频窗口的组件添加到Frame窗口中,  
        if ((visual = player.getVisualComponent()) != null) {  
            Dimension size = visual.getPreferredSize();  
            videoWidth = size.width;  
            videoHeight = size.height;  
            f.add(visual);  
        } else {  
            videoWidth = 320;  
        }  

        //取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中  
        if ((control = player.getControlPanelComponent()) != null) {  
            controlHeight = control.getPreferredSize().height;  
            f.add(control, BorderLayout.SOUTH);  
        }  

        //设定Frame窗口的大小,使得满足视频文件的默认大小  
        f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);  
        f.validate();  

        //启动视频播放组件开始播放  
        player.start();  
        mediaPlayer.start();  
    } else if (ce instanceof EndOfMediaEvent) {  
        //当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放  
        player.setMediaTime(new Time(0));  
        player.start();  
    }  
}  

}

错误:
Failed to configure: com.sun.media.PlaybackEngine@17c0f21
Bad header in the media: Bad data

Error: Unable to realize com.sun.media.PlaybackEngine@17c0f21

  • 写回答

2条回答 默认 最新

  • 毕知必会 2016-06-04 03:31
    关注

    没导入jmf的包吧,java的jdk里面没有这个包的

    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 虚心请教几个问题,小生先有礼了
  • ¥30 截图中的mathematics程序转换成matlab