是否可以从java中的AudioClip类实例提取音频流

是否可以从java中的AudioClip类实例提取音频流,java,audio,java-8,mp3,Java,Audio,Java 8,Mp3,我为mp3文件编写了一个带有命令行参数的短播放器。现在我想访问振幅数据,但似乎不可能直接从javafx中的AudioClip类获取音频数据。javazoom的mp3si解决方案似乎不是最先进的,因为它已经有9年的历史了,java在这段时间里发生了很大的变化 //lots of imports should appear here. // public class PlayingSound extends Application{ protected List<String>

我为mp3文件编写了一个带有命令行参数的短播放器。现在我想访问振幅数据,但似乎不可能直接从javafx中的AudioClip类获取音频数据。javazoom的mp3si解决方案似乎不是最先进的,因为它已经有9年的历史了,java在这段时间里发生了很大的变化

//lots of imports should appear here.
//
public class PlayingSound extends Application{
    protected List<String> files=null;
    @Override
    public void start(Stage stage) {
       for(String soundfile : files) {
           AudioClip sound = 
             new AudioClip(new File(soundfile).toURI().toString());
       sound.play();
       while( sound.isPlaying() ) try { 
           Thread.sleep(100);
       } catch(InterruptedException ie) {
       }
   }
   Platform.exit();
}

@Override
public void init(){
    files = getParameters().getRaw();
}
public static void main(String[] args) {
    Application.launch(args);
}}
//此处应显示大量导入。
//
公共类PlayingSound扩展了应用程序{
受保护的列表文件=null;
@凌驾
公众假期开始(阶段){
用于(字符串声音文件:文件){
音频剪辑声音=
新音频剪辑(新文件(soundfile).toURI().toString());
声音。播放();
虽然(sound.isPlaying())尝试{
睡眠(100);
}捕获(中断异常ie){
}
}
Platform.exit();
}
@凌驾
公共void init(){
files=getParameters().getRaw();
}
公共静态void main(字符串[]args){
应用程序启动(args);
}}

mp3spi和javazoom使用的Java声音API仍然是最新的。JavaFX被设计成通过有限的API与Java进行通信的黑盒,不允许任何未明确提供的内容。不仅无法获取音频数据,也无法获取数据,除非源恰好是受支持的URI类型之一(即没有Java
InputStream
、没有管道、没有可扩展的提供程序机制等)。因此,如果您决定放弃一个有效的解决方案,仅仅因为它已经存在了九年,换句话说,在过去的九年中已经可靠地工作了,那么您必须接受JavaFX的“最先进的技术”,它似乎是不灵活的×3。现在我将使用mp3spi。mp3spi和javazoom使用的Java声音API仍然是最新的。JavaFX被设计成通过有限的API与Java进行通信的黑盒,不允许任何未明确提供的内容。不仅无法获取音频数据,也无法获取数据,除非源恰好是受支持的URI类型之一(即没有Java
InputStream
、没有管道、没有可扩展的提供程序机制等)。因此,如果您决定放弃一个有效的解决方案,仅仅因为它已经存在了九年,换句话说,在过去的九年中已经可靠地工作了,那么您必须接受JavaFX的“最先进的技术”,它似乎是不灵活的×3。我现在将使用mp3spi。