问题标签 [jlayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6256 浏览

java - AudioTrack - 使用 jlayer(java mp3 解码器)的短数组到字节数组失真

我使用 jLayer 来解码 MP3 数据,这个调用:

这个返回解码数据的调用返回一个 short[] 数组。 output.getBuffer();

当我使用该方法调用 AudioTrack write() 时,它会在我循环浏览文件时正常播放:

但是,当我使用此答案中的任何方法将 short[] 数组转换为 byte[] 数组时:https ://stackoverflow.com/a/12347176/1176436声音会失真和抖动:

变成:

我做错了什么,我能做些什么来解决它?不幸的是,我需要将 pcm 数据放在我正在使用的另一个 3rd 方库的字节数组中。如果这很重要,文件是 22kHz,这就是实例化的方式:

非常感谢你。

编辑:这就是我现在实例化 AudioTrack 变量的方式。因此,对于 44kHz 文件,发送的值为 44100,而对于 22kHz 文件,发送值为 22050。

这是解码方法:

听起来是这样的(等待几秒钟):https ://vimeo.com/60951237 (这是实际文件:http ://www.tonycuffe.com/mp3/tail%20toddle.mp3 )

编辑:我很想分红,但我把赏金给了比尔,把接受的答案给了尼尔。两者都是巨大的帮助。对于那些想知道的人,我最终重写了 Sonic 原生代码,它帮助我完成了这个过程。

0 投票
2 回答
3670 浏览

java - 在Java问题中使用JLayer在线程中仅播放一个mp3文件

我正在使用带有 GUI 的 Java 编写的音频播放器。为了播放 mp3 文件,我选择了 javazoom 的 JLayer 库,因为我看到它非常流行和使用。我制作了 GUI,设法从播放列表中播放选定的 mp3 文件。

我的问题是,如果我多次按下播放按钮或播放列表中的文件,它将开始播放歌曲的次数与我按下它的次数一样多,我想在同一个线程中播放它;如果我再次按下播放按钮,我想再次播放而不是在播放当前歌曲时开始播放同一首歌曲。

这是我播放 mp3 文件的代码:

这是我的播放按钮方法:

我提到我是多线程的新手,所以不要对我这么苛刻。如果我不能用 JLayer 做到这一点,请向我推荐一个可以播放 mp3 文件的好库。提前感谢您,我正在等待您的建议。

0 投票
2 回答
1670 浏览

java - FileNotFoundException,文件存在 Java

我有一个非常奇怪的问题,我正在尝试使用一些 Java 代码和 JLayer 播放一些 MP3。我有一个方法设置来生成文件路径,但这让我很伤心。这是返回语句(以及该方法中涉及的所有代码):

我有一组大约 150 个 mp3 文件,全部命名为 1.mp3、2.mp3 等。它们最多可达 156 个(中间有一些缺失)。根据用户输入的 3 位代码,它会播放其中一种声音。这段代码完美地适用于 1-99 之间的任何东西,当你到达 100 时它会停止工作。当用户输入 100 或 110 或你有什么时,Java 会抛出 FileNotFoundException。我向你保证,文件在那里。下面是使用 findSoundFile 返回的文件路径的代码:

当我填写 numSeq 应该填写的空间时,它变得更奇怪了,如下所示:

上面的代码工作正常,播放声音没有挂断。任何想法将不胜感激,如果有任何困惑,请询问。

堆栈跟踪:

ls -l 文件之一:

ls -l 用于 100 岁以下的人:

0 投票
2 回答
3212 浏览

java - 如何导入我下载的这些 Java 类?

我是编程的初学者,我需要知道如何将我从 Internet 获得的类导入到我的文本文件中。我下载JLayer用于编写 MP3 播放器,但打字import javazoom.jl.player.Player;不起作用,不像import javax.swing.JOptionPane;.

我在一些论坛上读到我应该将JLayer库移动到某个地方以便 import 语句可以工作,但具体在哪里?我的JLayer图书馆目前在我的Downloads文件夹中。我应该怎么办?

0 投票
2 回答
1569 浏览

java - 如何使用 JLayer 停止声音

我正在使用 JLayer 在我的游戏中播放 mp3 文件,但我无法停止这首歌。那是我的代码:

当我使用 stop 方法删除哈希图“reproduciendo”的歌曲时,它应该停止,但什么也没做,我在这里读过这种方式,但它对我不起作用。你知道另一种方法吗?

0 投票
2 回答
3510 浏览

java - 使用 JLayer 在 Java 中循环背景音乐

我正在尝试使用 JLayer 将背景音乐添加到我的游戏中。如何将其设置为循环播放?

http://www.javazoom.net/javalayer/javalayer.html

0 投票
2 回答
1679 浏览

java - 尝试播放音频文件时出现 JLayer 异常

我一直在测试一个适用于 PC 和 Android 平台的 Java 库,前段时间有人告诉我使用 JLayer。今天我很高兴地编码,然后出现了这个异常:

我试图用谷歌搜索此异常的原因,但没有任何结果,所以我来这里寻求您的帮助。

这是我试图播放音频文件的功能:

先感谢您!:D

0 投票
2 回答
2583 浏览

java - 使用 JLayer 解码流式 mp3 数据时出现问题

我正在尝试使用 JLayer java lib 来解码 mp3 数据流。当下一个 mp3 数据块从网络到达时,我有一个异步调用的回调。到达的每个块都包含 4 个byte[]格式的 mp3 帧。将此数据传递给short[] decode(byte[] mp3_data)要解码的,输出是一个short[]pcm 音频缓冲区。使用该concatArray()方法将缓冲区附加到 while 循环内,直到用完所有 mp3 帧。我遇到的问题是前 2 帧或有时 3 帧数据返回填充零的 pcm 缓冲区,而最后 2 帧或 1 帧返回有效的 16 位音频值。

日志输出

如您所见,打印出每个 4 帧 mp3 块的 pcm 缓冲区,您可以看到前 2 - 3 个缓冲区被零填充。有没有人对 JLayer 有任何可以看出我的方法存在明显问题的经验?

0 投票
2 回答
1156 浏览

java - Java jLayer application freezes while playing song

I have a problem with jLayer. I have a button with code for starting a song:

When I click on this button, it begins to play the song but whole application freezes and I cannot click on anything. When the song ends, it's okay and I can click on other components again.

Can someone help me pls ? :) thank

0 投票
1 回答
9945 浏览

java - Java Jlayer Mp3 Player - 如何重复和停止歌曲

mp 3 播放器有问题。我正在使用jLayer。这是我的代码

在我的应用程序中,我需要从头到尾播放歌曲。所以当歌曲结束时我需要重新开始,当窗口关闭时我想停止这首歌......