使用带有JLayer解码器的AudioTrack
我正在研究使用Jlayer库来解码mp3文件(我需要访问音频示例)和audiotrack对象播放它的Android应用程序.我有这样的东西: int timeMarker = 0; int timeStep = 5000; while (!isCancelled()) { outSignalBuffer = decode(fileToPlay.getPath(), timeMarker, timeStep, bufferSize); audioTrack.write(outSignalBuffer, 0, outSignalBuffer.length); //publishProgress(outSignalBuffer); timeMarker += timeStep; } 此代码放置在我的自定义播放器中,以asynctask创建.通常,我的解码和写入方法可以正常工作,因为我听到了声音文件.问题是,我的声音在每5秒内定期混蛋(timeStep
0 2024-02-13
编程技术问答社区
在安卓系统上使用jlayer解码的MP3速度慢
需要1分钟来解码10秒,我如何更快地解码mp3? public static byte[] decode(String path, int startMs, int maxMs) throws FileNotFoundException { float totalMs = 0; ByteArrayOutputStream os = new ByteArrayOutputStream(); File file = new File(path); InputStream inputStream = new BufferedInputStream(new FileInputStream(file), 8 * 1024); try { Bitstream bitstream = new Bitstream(inputStream); Decoder decoder = new Decoder(); b
0 2024-02-10
编程技术问答社区
使用jlayer(java mp3解码器)将短数组转换为字节数组的音频跟踪失真
我正在使用jlayer解码mp3数据,并使用此调用: SampleBuffer output = (SampleBuffer) decoder.decodeFrame(frameHeader, bitstream); 此呼叫返回解码数据,返回短[]的数组. output.getBuffer(); 当我使用该方法调用Audiotrack Write()时,当我循环通过文件时,它效果很好: at.write(output.getBuffer(), 0, output.getBuffer().length); 但是,当我使用此答案中的任何方法将短[]数组转换为字节[]数组: https/stackoverflow.com/a/12347176/1176436 声音被扭曲和抖动: at.write(output.getBuffer(), 0, output.getBuffer().length); 变为: byte[] array = ShortToBy
0 2024-01-31
编程技术问答社区
通过JLayer和LayerUI缩放JLayeredPane
有人建议在此堆栈溢出问题上,在秋千应用程序中实现Zooming的最佳方法是通过Java 7提供的JLayer装饰器. 我一直在关注,然后在稍后我可以使用同一类来捕获鼠标事件并将其分配到其未缩放的坐标. 我在第一步遇到了一些麻烦,无法理解为什么g2.scale(zoom, zoom)在下面的SSCCE中没有效果. import javax.swing.*; import javax.swing.plaf.LayerUI; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; public class Demo { public static void main(String args[]) { EventQueue.invokeLater(new
0 2023-12-26
编程技术问答社区
用JLayer改变音量
我在音乐播放器项目中对JLayer有一个非常具体的问题.我想包含一些调整卷的内容,但似乎并不容易实施. 这是因为JLayer不支持它.我从项目中排除了Player类,并更改了一些方法,并且可以很好地播放mp3.为了调整卷,我添加到Player类中的此方法: public boolean setGain(float newGain) { if (audio instanceof JavaSoundAudioDevice) { System.out.println("InstanceOf"); JavaSoundAudioDevice jsAudio = (JavaSoundAudioDevice) audio; try { jsAudio.write(null, 0, 0); } catch (JavaLayerException ex
2 2023-11-25
编程技术问答社区
使用jlayer调整音量
我和一个朋友正在编程MP3播放器作为校园.我们快要完成了,现在陷入了试图编程一个函数以更改播放器卷的点. 我们正在使用: audiodevice 高级游戏 我知道其他人已经问了同样的问题,但我没有得到解决方案,我不想回答这样的古老问题,所以我想我会再次问. 欢呼 蒂莫西 解决方案 最简单的方法是通过首先,您需要将以下内容添加到您的类路径: jl1.0.1.jar mp3spi1.9.5.jar tritonus_share.jar ...所有这些都在mp3Spi的分布中(上面链接). 其次,您需要在播放之前解码AudioInputStream. AudioInputStream audioStream = AudioSystem.getAudioInputStream(file); AudioFormat baseFormat = audioStream.getFormat(); AudioFormat decodedFormat
6 2023-11-25
编程技术问答社区
除了一个组件外,"涂白 "整个swing GUI
[这个问题与这个问题] 设置:我有这个自制的"可编辑标签"组件,看起来像标签,但是当您单击它时,它会变成一个可编辑的字段,允许您进行编辑.您可以按ESC取消或换档以确保您的编辑 - 或单击可编辑字段下的各个按钮. 挑战:当进行编辑时,我希望整个UI被" Whited Out",除了编辑标签区域,以明确表示他应该指望他应该他焦点. 解决方案 替代方案,可以使用JXLAYER项目来实现这一点.查看他们的一些演示,当选择项目时,它们会模糊GUI.您将必须实现自己的JXlayer视图才能使您的GUI变白. 项目URL:演示在首页上的"入门"项目下. 其他解决方案 您可以查看由于问题作者的评论而更新. 这种问题通常通过look'n'feel的人体实现来解决. 通常,需要屏幕的组件将为此目的设置客户端属性.为该组件创建了一个渲染组件的LNF也注册了Listerr.设置此属性后,LNF将收到一个事件.在活动接收中,然后将玻璃窗格安装在整个容器框架上.
0 2023-11-11
编程技术问答社区
将一个透明的JPanel放在另一个不工作的JPanel上
我试图将jpanel放在另一个包含jtextarea和一个按钮的jpanel顶部,我想让上端透明.我通过制作上部面板的setopaque(false)尝试了一下.但这是行不通的.谁能帮我解决这个问题?提前致谢! public class JpanelTest extends JPanel { public JpanelTest() { super(); onInit(); } private void onInit() { setLayout(new BorderLayout()); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(new JTextArea(100,100),BorderLayout.CENTER); panel.add(new JButton("submit"),BorderLayout
4 2023-10-11
编程技术问答社区
Java Swing的圆形进度条不工作
我已经发现了这个测试项目来自Oracle网站,因为我想要在我的项目中添加圆形进度栏. 我正在使用Netbeans开发应用程序,当我启动应用程序时,圆圈应该是.... doversaer. . 我删除了所有用于解决此问题无用的代码,并且我有此代码: import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import javax.swing.*; import javax.swing.plaf.LayerUI; public class Loading_Test extends javax.swing.JFrame { static final WaitLayerUI layerUI = new WaitLayerUI(); public Load
8 2023-10-11
编程技术问答社区
安全桌面模式对java应用程序的影响
现在有人如何实现"安全desktop模式"(效果),例如从Windows Vista/7 UAC同意块中获得的? 我假设这是一些功能,它将在此处删除以下像素(可能是灰色),然后最终将其绘制到屏幕上.我想将其应用于我的应用程序,以防止用户执行任何操作,直到另一个用户连接到系统为止(但这是旁边的). 我真的很感谢您的建议. 善意, A. 编辑:我真的只是在寻找这个 graphicsFX.setColor(new Color(0, 0, 0, 0.8f)); graphicsFX.fillRect(0, 0, 800, 600); 输入的递延我可以做得很好. 感谢所有人. 解决方案 我们使用 这确实很有用,因为它可以将用户锁定在给定容器中,而不会像GlassPane解决方案一样锁定应用程序.就像容器的玻璃窗格;) 我偷了在这里 public class JXLayerTest { public static v
4 2023-10-11
编程技术问答社区
用JLayer从Jar内部加载一个MP3文件
我想从jar文件本身内部加载mp3文件,然后与jlayer一起播放.当我尝试这样做时,我要么获得NullPoInterException或FileNotFoundException.关于如何解决此问题的任何想法? //MP3Player.java package Music; import java.io.BufferedInputStream; import java.io.FileInputStream; import javazoom.jl.player.Player; public class MP3Player extends Thread { private String filename; private Player player; private Thread mp3Thread; private boolean playing; private boolean locked; // constructor that
8 2023-06-08
编程技术问答社区
LineUnavailableException用于使用java播放mp3
我的目标是从Java播放MP3文件.使用我采用的每种方法,它总是会失败LineUnavailableException. AudioInputStream inputStream = AudioSystem.getAudioInputStream(new URL("http://localhost:8080/agriserver/facebook/sound/test6.mp3")); Clip clip = AudioSystem.getClip(info); clip.open(inputStream); clip.start(); 修复它的尝试失败: 使用Sun的Mp3插件. 使用jlayer第三方库 使用Tritonus第三方库 用Sony Sound Forge,Adobe Sound Booth重新编码mp3,所有运气 以不同的编码速率和采样率重新编码MP3 尝试使用JMF 在其他应用程序中使用互联网的随机mp3
10 2023-06-08
编程技术问答社区
JLayer暂停并恢复歌曲
我注意到很多主题是关于使用JLayer暂停/恢复MP3的主题,因此为了帮助每个人,我为此做了整个班级!请参阅下面的答案. 注意:这是我的个人用途,因此它可能不像某些人希望的那样健壮.但是,由于其简单性,进行简单的修改并不难. 解决方案 一个非常简单的播放器实现,它确实在暂停播放.它通过使用单独的线程播放流并告诉播放器线程(如果/何时暂停和恢复)来起作用. public class PausablePlayer { private final static int NOTSTARTED = 0; private final static int PLAYING = 1; private final static int PAUSED = 2; private final static int FINISHED = 3; // the player actually doing all the work private
4 2023-06-07
编程技术问答社区
组件分层 Java Swing, 悬停时显示分层
我在同一容器中彼此之间有两个JPanel s.我正在使用container.add(jpanel, 0);和container.add(otherjpanel, 1).但是,它可以正常工作,以使顶层显示我必须用鼠标悬停在组件上. 这是一些可执行的代码显示我的问题. 只是屏幕上部的悬停鼠标. import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import javax.swing.event.*; import javax.swing.*; import javax.swing.text.*; import java.io.*; import java.util.*; public class test { public static void main(String args[]) { try { UIMana
18 2023-05-19
编程技术问答社区
Java Jlayer Mp3播放器-如何重复和停止歌曲
我对MP 3播放器有问题.我正在使用jlayer. 这是我的代码 private void formWindowOpened(java.awt.event.WindowEvent evt) { new Thread (){ public void run(){ try { Player prehravac; FileInputStream buff = new FileInputStream(Okno.filename); prehravac = new Player(buff); prehravac.play(); if (prehravac != null) { prehravac.play(); } }
30 2023-04-21
编程技术问答社区
在java中使用JLayer在一个线程中只播放一个mp3文件的问题
我正在用GUI用Java编写的音频播放器工作.为了播放MP3文件,我选择了Javazoom的Jlayer库,因为我看到它非常受欢迎且使用.我制作了GUI,设法从播放列表中播放了选定的MP3文件. 我的问题是,如果我在播放按钮或播放列表中的文件上多次按下它,它将在我按下时开始播放歌曲,并且我想播放它的一个相同的线程;如果我再次按播放按钮,我想在当前歌曲播放时再次播放不要播放同一首歌. 这是我的代码播放mp3文件: public class Playing implements Runnable{ private Player mp3Player; private Thread playerThread; public void createPlayer(FileInputStream file) throws JavaLayerException{ mp3Player = new Pla
12 2023-04-02
编程技术问答社区
jlayer.javazoom播放器无法停止播放MP3
如何在jlayer中停止mp3? (the stop()不再使用) 我的代码如下: //main class mp3_main private AdvancedPlayer player; public static void main(String[] args) { String file="C:\\cd.mp3"; mp3PlayerSample mp3 = new mp3PlayerSample(file); mp3.play(); mp3.stop(); } //class mp3PlayerSample private String filename; private BufferedInputStream buffer; private AdvancedPlayer player; //constructor public mp3PlayerSample(String filename) {
14 2023-04-02
编程技术问答社区
有没有可能在下载整个文件之前就知道一个MP3的持续时间?
这是关于mp3的文件格式的问题. 我一直在寻找一种获得MP3持续时间的方法.由于我使用jlayer spi来解码mp3,因此我发现在音频源是文件的地方是可能的. AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(source); Long microseconds = (Long) fileFormat.properties().get("duration"); System.out.println(microseconds); 但是,当我采用类似的代码和非常相同的mp3并将源更改为URL时,jlayer不提供持续时间: AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(source.toURI().toURL()); Long microseconds = (Long) fileFormat.properties().get(
6 2023-04-02
编程技术问答社区
用JLayer解码MP3文件
我想使用jlayer解码mp3文件.我已经搜索并搜索了有关如何确切执行此操作的文档和示例,但没有任何使用.我发现的所有内容都嵌入了其他示例或参考文献中,这在我的情况下是不可接受的. 我觉得这非常容易,但是我不知道该怎么做.我不知道 的参数是什么 Decoder decoder = new Decoder(); decoder.decodeFrame(Header header, Bitstream stream); 或如何获得它们. tl; dr除了jlayer以外什么都没有解码mp3文件?没有mp3 spi,javasound,tritonus-没有. 解决方案 自己弄清楚了. Bitstream bitStream = new Bitstream(new FileInputStream("path/to/audio.mp3")); while(condition){ Decoder decoder = new Decoder();
10 2023-04-02
编程技术问答社区
使用JLayer时在Java中改变音量
我正在使用jlayer从Internet播放MP3数据的输入.如何更改输出的音量? 我正在使用此代码来播放它: URL u = new URL(s); URLConnection conn = u.openConnection(); conn.setConnectTimeout(Searcher.timeoutms); conn.setReadTimeout(Searcher.timeoutms); bitstream = new Bitstream(conn.getInputStream()/*new FileInputStream(quick_file)*/); System.out.println(bitstream); decoder = new Decoder(); decoder.setEqualizer(equalizer); audio = FactoryRegistry.systemRegistry().createAudioDevice(); a
6 2023-04-02
编程技术问答社区