gpt4 book ai didi

java - 示例需要 : manually override automatic SPI class registration (Java AudioSystem), 以实现 MP3+M4A 共存

转载 作者:行者123 更新时间:2023-12-03 02:10:23 25 4
gpt4 key购买 nike

我试图在同一个项目中同时使用 MP3SPI 和 JAAD。众所周知,JAAD 倾向于“占用”SPI 音频提供程序接口(interface),但也有人报告说 MP3SPI 也会阻止 JAAD 正确播放 AAC/M4A 文件。解决方法是确保每个在类路径中都在另一个之前,但这甚至对我不起作用。

我能得到的最接近的方法是使用最后一个已知的解决方法,将 JAAD 放在类路径的最后,并手动检查文件扩展名以明确指定它。使用此配置,我可以播放 AAC 文件,但 MP3 文件会导致“重置为无效标记”错误。如果我编辑 jar 以从类路径中完全删除 JAAD 库,则 MP3 文件可以正常播放。

所以我的问题:有人可以给我一个很好的例子(好的,任何例子!)如何禁用或忽略自动 SPI 注入(inject),并根据文件扩展名(或其他手动文件类型检测)手动创建流?

魔法的问题在于,当它出错时,它会出错。 :)

最佳答案

我刚刚意识到答案是使用AAC示例中的代码并将其扩展到Mpeg代码:

            switch (AudioFileExtension.getTypeFromName(info.path ))
{
case AAC:
in = new AACAudioFileReader().getAudioInputStream(file);
decodedInput =
AudioSystem.getAudioInputStream( OutputAudioFormat, in );
break;

case MP3:
in = new MpegAudioFileReader().getAudioInputStream( file );
decodedInput =
AudioSystem.getAudioInputStream( OutputAudioFormat, in );
break;

诀窍是手动实例化 MpegAudioFileReader() 并完全忽略 AudioSystem。

关于java - 示例需要 : manually override automatic SPI class registration (Java AudioSystem), 以实现 MP3+M4A 共存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24702869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com