我想从mp3文件在java程序中创建一个声波。我研究发现,对于wav文件,我需要使用AudioInputStream并计算字节数组。。。从mp3文件中,我使用JavaFX媒体和媒体播放器。Inputstream中的字节是否与Javafx媒体中的相同。getSource()。getBytes()?音频输入流无法读取mp3。。。
或者,我应该如何获得一个mp3文件的声波值?
来自AudioInputStream的字节:
AudioInputStream audioInputStream;
try {
audioInputStream = AudioSystem.getAudioInputStream(next);
int frameLength = (int) audioInputStream.getFrameLength();
int frameSize = (int) audioInputStream.getFormat().getFrameSize();
byte[] bytes = new byte[frameLength * frameSize];
g2.setColor(Color.MAGENTA);
for(int p = 0; p < bytes.length; p++){
g2.fillRect(20 + (p * 3), 50, 2, bytes[p]);
}
} catch (UnsupportedAudioFileException | IOException e) {
e.printStackTrace();
}
从JavaFX:
Media media;
MediaPlayer player;
media = new Media("blablafile");
player = new Mediaplayer(media);
byte[] bytes = media.getSource().getBytes();
JavaFXMediaAPI没有像Java10那样提供太多的底层支持。它的设计似乎只具备播放媒体所必需的功能,而没有显著地操纵媒体。
话虽如此,您可能想看看AudioSpectrumListener
。我不能保证它会给你你想要的(我不熟悉计算机音频的概念),但它可以让你创造你的声波;至少是一个粗糙的表示。
您可以使用相应的属性将AudioSpectrumListener
与MediaPlayer
一起使用。
如果您的计算不必是实时的,那么您可以提前使用:
byte[] bytes = URI.create(media.getSource()).toURL().openStream().readAllBytes();
但是,请注意,如果媒体是远程的,您将下载两次字节;一次获取声波的字节,另一次使用MediaPlayer
实际播放媒体时。
此外,您希望在后台线程而不是JavaFX应用程序线程上执行上述操作,以避免冻结UI的可能性。
我在JavaFX的小游戏中工作。我有一个管理音乐的实用类:
我对JavaFXMediaPlayer有问题。出于测试目的,我从http://docs.oracle.com/javafx/2/media/playercontrol.htm并添加了一些错误处理。使用以下错误处理时 我得到这个控制台输出: 视频采用h264和aac(音频)编码,分辨率为1920x1168px。分辨率大于1920x1080px的每个视频都会出现此错误。分辨率为1920x1080px或
这可能不是一个可以接受的问题,但我现在非常绝望。 我需要一个同步java媒体播放器与快速寻找和平衡修改。 脚本: 我有一个javaFX项目,我必须在循环中播放一个非常短(50-100毫秒)的媒体文件。问题是,在重新启动之前,我需要等待一些要求。 简而言之:播放声音- javafx提供了一个我修改过的媒体播放器。 如果有人能为我指出正确的方向(图书馆/我错过的东西),我将不胜感激 ps允许的java
最初,我试图从javafx项目中创建跨平台的可执行文件。一切正常,所以我想在我的项目中添加音频,所以我在在我添加javafx媒体依赖性之前,一切都很好,但现在我得到了一个错误,也不能解析媒体类。如何解决这个问题? 仅供参考,我正在使用: 项目:Maven Java:JDK 13 IDE:netbean 13 Javafx:openjfx 11 下面是我的项目结构: 如果你需要更多的澄清,请告诉我。
我目前在一个项目中使用Javafx 2,我可能需要长时间无限循环播放一个视频。在windows上,当视频播放时,我的proifiler工具显示非常正常的图片,cpu负载不是很重(在2个内核上运行时约为2x40-50%),内存使用峰值约为250 MB,这是正常的。但是,当我在Ubuntu机器上部署应用程序时,每个内核的cpu负载达到70%左右(尽管它是一个双核atom处理器,所以假设这是正常的),内
媒体组件包括哪些大型媒体对象,比如图片、视频、音频,等等。 Material 盒子 Material 盒子是来源于Lightbox 插件的 material design。当用户单击图片它会变大。Material 盒子平滑的使图片居中并且变大。再次单击还原。或者通过ESC键。 创建上面图片的效果,只要增加一个 materialboxed 类到图片标签中。 <img class="materialb