小程序大小(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 兆字节)太重而无法加载?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter iOS - 在加载 Google Maps 小部件之前无法获取 initialCameraPosition 的当前位置