首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java Sound中支持的文件格式

Java Sound中支持的文件格式
EN

Stack Overflow用户
提问于 2018-06-08 10:45:54
回答 1查看 154关注 0票数 0

下面是我用来确定声音文件是否可以作为Clip播放的代码(用Kotlin编写)。

它在24位文件上返回false,而在Mac上返回true,结果不同。为什么它不在每个系统上返回相同的结果?

代码语言:javascript
复制
    fun isValidFile(file: File): Boolean{

     try {
         val format = AudioSystem.getAudioFileFormat(file).format
         val info = DataLine.Info(Clip::class.java, format)
         val audioSystem = AudioSystem.getLine(info)

         return audioSystem is Clip
     }
     catch (e : Exception){
         return false
     }

    }

24位文件可以在Mac上播放,但如果我试图通过FloatControl调节音量,我得到Unsupported control type: Master Gain错误,而16位文件工作正常。

代码语言:javascript
复制
clip.getControl(FloatControl.Type.MASTER_GAIN) as FloatControl
EN

回答 1

Stack Overflow用户

发布于 2018-06-09 04:29:16

“为什么它不在每个系统上返回相同的结果?”

操作系统和它们配置的各种计算机和卡都在Java外部。它们在使用的标准和提供的控制方面有所不同。缺少用于特定格式的音量控制很可能是由特定的操作系统可用来决定的。

出于我的目的,我发现音量控件和其他控件(平移、各种效果)是如此随意,以至于为了我想做的事情,我咬紧牙关,用Java编写了这些函数。这可以通过使用SourceDataLine而不是剪辑来完成,因为SourceDataLine会在播放数据时将数据公开给编码器。

我还满足于标准的“CD质量”格式:16位、立体声、44100 fps,因为这是目前在我遇到的所有Java系统上实现的最高标准。(我没有任何使用Raspberry PI -- IDK的经验,如果它在那里工作的话。)

库可以提供帮助,可以检查代码以获取示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50752616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档