利用Applet多媒体处理能力中的声音处理,编译了下面的代码,然后用浏览器运行它,短的wav文件
运行没有问题,但是浏览器在载入一个半个小时的wav文件时,会无法播放,是浏览器不能支持大文件,
还是init()没有完成,start()就开始运行,从而使声音文件无法播放。我曾经试过用synchronzed
但编译出错,后来一想这本来就是一个线程,应该不是。这个问题怎么解决,如果没法解决各位能推荐
一个能定时播放音频文件的软件吗?
import java.awt.*;
import java.applet.*;
public class zhaoshang extends Applet{
AudioClip music;
public void init(){
music=getAudioClip(getCodeBase(),"qichuang/qichuang.wav");
}
public void start(){
music.play();
}
public void stop(){
music.stop();
}
}

解决方案 »

  1.   

    getAudioClip实际上是AppletContext接口的一个方法,AppletContext接口的具体实现就是Applet的运行环境。
    当你调用该方法的时候,它只是告诉运行环境有这么一个资源,然后就返回。当你调用播放方法的时候,运行
    环境才开始加载数据。而小的多媒体文件加载的较快,大的多媒体文件加载的较慢,表面上看来就是小的多媒
    体文件就能播放,而大的多媒体文件就不能播放了。
    这是我参考一些资料之后得出的结论,请高手赐教。
    请尝试别的方法或者程序运行时多等待一会,然后反馈一下结果。谢谢。
      

  2.   

    除了我在4楼说明的原因之外,我经过实验之后,发现,如果加载的文件太大的话(我用来做实验的文件大小是48.5M),会报告一个异常,就是说内存溢出了。所以如果加载的文件太大,超出了Java运行环境所设定内存的话,文件就会加载失败,从而不能播放。
      

  3.   

    我很想知道Applet所能加载的多媒体文件的大小的上限是多少,不知道有没高手能够回答,getAudioClip方法的具体实现并没有说明。
      

  4.   

    java针对网络,可能大文件java就没考虑过。是不是选择java语言来写开始就是错误。