小程序大小(15 兆字节)太重而无法加载?

Posted

技术标签:

【中文标题】小程序大小(15 兆字节)太重而无法加载?【英文标题】:Applet size (15 megabytes) too heavy to load? 【发布时间】:2011-10-19 21:57:15 【问题描述】:

我想知道 15 mega 是不是很重的小程序要加载? 我的主要问题是两个声音文件 (.Au),其重量约为 9 兆字节。 有人对如何使用 mp3 或其他减轻体重的想法提出建议吗? 谢谢

相关代码:

   public class DJ 
    

        private ArrayList<Clip> m_Records = new ArrayList<Clip>();
        private int m_CurrentRecored = 0;
        private Thread m_MusicThread = null;
        private AppletContext m_AppletContext;
        //java.net.URL m_CodeBase;
        //AppletContext ac;

        public DJ() 
        
            try 
            
                createClip(getClass().getResourceAsStream("/Music/train.mp3"));
                createClip(getClass().getResourceAsStream("/Music/machine.mp3"));
            
            catch (Exception ex)
            
                Logger.getLogger(DJ.class.getName()).log(Level.SEVERE, null, ex);
            

        

        private void createClip(java.io.InputStream i_SoundFileStream) throws Exception
        

            InputStream i = new Audiostream(i_SoundFileStream);

            AudioInputStream sound = AudioSystem.getAudioInputStream(i);
            // load the sound into memory (a Clip)
            DataLine.Info info = new DataLine.Info(Clip.class, sound.getFormat());
            Clip clip = (Clip) AudioSystem.getLine(info);
            clip.open(sound);
            m_Records.add(clip);
        

【问题讨论】:

哎呀。 .au 文件基本上是未压缩的原始 pcm(我认为是 8 位/11khz?)肯定要切换到有损压缩格式。它们可能会变成 200kb 的 mp3 之类的。 【参考方案1】:

任何人都可以建议如何使用 mp3 来代替 ..

将 JMF 的 mp3plugin.jar 添加到小程序的运行时类路径(在存档元素中),Java Sound 将能够像打开 wav 或 au 一样打开 MP3。

MP3 插件将无法解析一些更现代的 MP3,这些 MP3 执行非标准操作,例如在 MP3 中包含封面艺术,但使用标准 MP3 格式对其进行编码,并且可以正常处理。


..将 mp3plugin.jar 添加到小程序的运行时类路径(在存档元素中)是什么意思?

<html> 
<BODY> 
<APPLET 
    archive="MyGame.jar,mp3plugin.jar" 
    code="GUI.JPanelGameApplet" 
    width=800 
    height=580>
</APPLET> 
</P> 
</BODY> 
</HTML>

请注意,我还将 Archive 更改为 archive(只是为了保持一致)和

code="GUI/JPanelGameApplet.class"

(一般可以容忍,但不正确)到

code="GUI.JPanelGameApplet" 

(假设小程序在GUI 包中)。如果小程序不是在 GUI 包中,则元素应该以不同的方式编写。


我已经下载了 exe 格式的 MP3 插件..

忽略 EXE 链接并下载 Zip!

..我安装了它”

不必费心运行/安装 EXE(EXE 对 Mac 或 Unix/Linux 上的最终用户没有用处)。只需展开 Zip 并将 Jar 添加到运行时类路径

我肯定会在 HTML 中进行代码更改..

这将是“解决问题”(对于嵌入式小程序)。

【讨论】:

好的,但是您能否告诉我更多关于将 mp3plugin.jar 添加到小程序的运行时类路径(在存档元素中?)的意思是什么?这是我当前的 HTML: @AndrewThomson:另一个问题我已经下载了 exe 格式的 MP3 插件,所以我以前可以在我的 netbeans 上播放声音。现在我得到: java.lang.IllegalArgumentException:没有行匹配接口剪辑支持格式 MPEG1L3 44100.0 Hz,每个样本的未知位,立体声,未知帧大小,未知帧速率,受支持。在 javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:459) 为什么会发生谢谢 @AndrewThomson:谢谢链接是download.oracle.com/otn-pub/java/javamp3/1.0-fcs/… 正如我所说,我安装了它,但仍然得到我上面提到的异常。我肯定会在 HTML 中更改代码,但是当我运行时如上所述,我在 Netbeans 中用于调试的小程序建议它尚未工作。 "link is ...exe" 忽略 EXE 链接并下载 Zip! “正如我所说,我安装了它” 不要费心运行/安装 EXE(EXE 对 Mac 或 Unix/Linux 上的最终用户没有用处)。只需展开 Zip 并将 Jar 添加到运行时类路径 “我肯定会在 HTML 中进行代码更改” '问题解决了! “但是,当我在 Netbeans 中运行我的小程序进行调试时,建议它还不能正常工作,如上所述。” 相同的区别。将 Jar 添加到 Netbeans 中的运行时类路径。你如何在 Netbeans 中做到这一点是一个我无法回答的单独问题。我不使用它。 @andrewThomson:您所写内容的一个例外 - 编写 :code="GUI.JPanelGameApplet" 不起作用 - 它无法以这种方式找到小程序。只有 code="GUI/JPanelGameApplet.class" 有效..【参考方案2】:

您可以使用 JLayer 来使用 mp3。

降低小程序大小的一个选项是单独加载音频或将其流式传输,这样您至少可以在获取音乐时拥有一个加载条/图像。

【讨论】:

“单独加载音频” 这很有道理。很少有音频/视频格式可以放在 Zip/Jar 中。它为此类格式提供的进一步压缩通常不超过 5%。【参考方案3】:

查看任何download time calculator — 超过一分钟就可以了。听起来很重。

【讨论】:

以上是关于小程序大小(15 兆字节)太重而无法加载?的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中打印数据的大小(兆字节)

为啥微信小程序一直在加载中

Qt/QML。一种无负载学习图像大小的方法

微信小程序无法加载-SSL配置修改

我的Flash项目太重,无法顺利运行

Flutter iOS - 在加载 Google Maps 小部件之前无法获取 initialCameraPosition 的当前位置