...

2008年5月2日星期五

java多媒体学习初探【原】

最近学习java多媒体编程 就安装了jmf(java media framework,java媒体架构)
安装很顺利,一点障碍都没有(呵呵,这点还是比较自豪的)
再接着我就到网上找示例代码,很顺利找到了几个简单的例子!
很简单,是人都能看懂(当然了,我是说有java基础的)
于是,我选择了一个貌似比较正确的拿来运行
呵呵 美中不足的是它还是有缺陷,就是那个累没有实现javax.media.ControllerListener接口的方法
这点对于我来说比较简单,加上一个空方法public void controllerUpdate(ControllerEvent ss)
这个可爱的编译程序就不找我麻烦了!不错还是比较和蔼 呵呵
Process completed.(处理完成---呵呵,我也显摆一下我的English)
这是每个编程序的人最喜欢的讯息 呵呵 好消息(No news is good news--这是我们的期待哈)
Unable to handle format(来消息了,坏消息!)--不能操纵的格式!
我就去查格式表,因为我输入的文件格式是avi(由于历史原因,这个格式有很多种编码格式),格式表中是支持这个格式的
我想是不是 代码还有问题?我又检查代码,对照着帮助文档(英文的--我应该自豪一下),那个javax.media.Player的实例player没有执行start()方法,于是我有美滋滋的加上这个方法,呵呵 谢天谢地
我还是看见了成功之母
看来问题就出在这个avi上了,以前接触过这种文件(有兴趣的去查查 呵呵)
我就换了个mp3文件,哇!
我听到了美妙的歌声(才知道什么叫天籁!!)
我又将那个start()方法屏蔽掉
在运行一下!呵呵 果然这个方法是必须的!!必须的!!呵呵
下面是源码:
安全通过!!

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Panel;
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.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
public class JMFSample implements ControllerListener {
public static void main(String[] args) {
JMFSample sp = new JMFSample();
sp.play();
}

private Frame f;
private Player player;
private Panel panel;
private Component visual;
private Component control = null;

public void controllerUpdate(ControllerEvent ss){//一开始这个方法没有被实现!呵呵
}

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:E:/abc.mp3");
} 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();
player.start();//这个是必须的!!!
}
}

1 条评论:

匿名 说...

好,就是有点太简单了!