Javafx和wav文件
我正在玩javafx,我修改了MediaPleyer演示的代码,试图复制一个wav文件。它不起作用Javafx和wav文件,java,javafx,wav,Java,Javafx,Wav,我正在玩javafx,我修改了MediaPleyer演示的代码,试图复制一个wav文件。它不起作用 /* * Copyright (c) 2009, SUN Microsystems, Inc. * All rights reserved. */ package javafx.tools.fxd.demos.mediaplayer; import javafx.scene.*; import javafx.scene.media.*; import javafx.stage.*; v
/*
* Copyright (c) 2009, SUN Microsystems, Inc.
* All rights reserved.
*/
package javafx.tools.fxd.demos.mediaplayer;
import javafx.scene.*;
import javafx.scene.media.*;
import javafx.stage.*;
var player = javafx.scene.media.MediaPlayer {
repeatCount: 1
media: Media {
source: "{__DIR__}Door_Open.wav"
};
};
class MyMediaPlayerUI extends MediaPlayerUI {
override protected function contentLoaded() {
super.contentLoaded();
var s = player.media.source;
var i = s.lastIndexOf ("/");
if (i >= 0) {
s = s.substring (i + 1);
}
fileName.content = s;
}
}
var stage : Stage;
var ui = MyMediaPlayerUI {};
var skins = [ "{__DIR__}MediaPlayer1.fxz", "{__DIR__}MediaPlayer2.fxz" ];
var index = 0;
ButtonController {
pressed: bind ui.playPressed
hovered: bind ui.playHovered
normal: bind ui.playNormal
activeArea: bind ui.playActiveArea
action: function () {
player.play ();
}
}
ButtonController {
pressed: bind ui.pausePressed
hovered: bind ui.pauseHovered
normal: bind ui.pauseNormal
activeArea: bind ui.pauseActiveArea
action: function () {
player.pause ();
}
}
ButtonController {
pressed: bind ui.switchPressed
hovered: bind ui.switchHovered
normal: bind ui.switchNormal
activeArea: bind ui.switchActiveArea
action: function () {
index = (index + 1) mod skins.size ();
ui.url = skins[index];
}
}
stage = Stage {
title: "Media Player"
//visible: true
resizable: false
onClose: function() { java.lang.System.exit (0); }
scene: Scene {
content: ui
}
}
wav文件不得复制,无任何例外。
如果我将repeatCount属性更改为
repeatCount: javafx.scene.media.MediaPlayer.REPEAT_FOREVER
最终给出一个堆空间异常:
Exception in thread "PlayerLoop" java.lang.OutOfMemoryError: Java heap space
上面的代码有什么问题吗?有没有办法重现wav文件?我认为这对于javafx是必要的,因为wavs是一种非常广泛的音频格式
谢谢。JavaFx文档在这方面很奇怪。在一个页面上,它说播放放在jar文件中的wav文件有效;在另一个页面上,它说不起作用 对我来说,它不像对你那样有效。(有效的方法是播放未放入jar文件中的.wav文件。) 这是我的解决方案(我自己的音频播放器) 使用以下方式播放音频:
PlayAudio {
source: "{__DIR__}audio/audio.wav"
}.play();
JavaFx文档在这方面很奇怪。在一个页面上,它说播放放在jar文件中的wav文件有效;在另一个页面上,它说不起作用 对我来说,它不像对你那样有效。(有效的方法是播放未放入jar文件中的.wav文件。) 这是我的解决方案(我自己的音频播放器) 使用以下方式播放音频:
PlayAudio {
source: "{__DIR__}audio/audio.wav"
}.play();
它一定与文件本身有关,因为我尝试了Windows中的“chord.wav”,它可以工作。在这种情况下,当声音完成第一次复制并再次单击“播放”时,我会得到以下异常:线程“AWT-EventQueue-1”中的异常com.sun.media.jmc.OperationUnsupportedException:media player对等无法将媒体时间设置为给定时间:1.20703191这非常令人沮丧。这一定与文件本身有关,因为我尝试了“chord.wav”从Windows开始,它可以工作。在这种情况下,当声音完成第一次复制并再次单击“播放”时,我会遇到以下异常:线程“AWT-EventQueue-1”com.sun.media.jmc.operation不支持异常:media player对等机无法将媒体时间设置为给定时间:1.20703191这非常令人沮丧。感谢您的帮助,亚历山大,谢谢你的帮助,亚历山大。