首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >立体声UnsupportedAudioFileException,但不是双声道音频

立体声UnsupportedAudioFileException,但不是双声道音频
EN

Stack Overflow用户
提问于 2019-05-30 15:19:20
回答 1查看 44关注 0票数 0

我正在使用AudioInputStream在Java中做一些基本的音频处理。我的程序可以正确加载在16位整数PCM音频编码与两个轨道,但不是立体声。当显示一个文件时(根据file ),

代码语言:javascript
运行
复制
Input #0, wav, from XXX:
  Duration: 00:00:02.80, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s

一切都很好。但是,当出现

代码语言:javascript
运行
复制
  Duration: 01:19:15.58, bitrate: 1536 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s

(这是我实际上想要编辑的文件),它会失败,出现以下错误

代码语言:javascript
运行
复制
Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)

编码是相同的,而且采样率差异似乎不太可能导致问题。看起来很像是立体声和两个声道导致了这个异常,但是立体声应该是两个声道,不是吗?

我可以使用以下命令复制此问题

代码语言:javascript
运行
复制
AudioSystem.getAudioInputStream(new File("file under test"));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-31 08:55:42

您可以手动构建相应的AudioFormat并使用isFormatSupported(AudioFormat)进行检查

对44100的支持在Java中是标准的,但是48000更加随意,并且取决于运行代码的计算机的操作系统。请参阅6.3 Audio Formats

如果你不想增加编码的复杂性,Audacity是一个很好的转换音频资源的工具。

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

https://stackoverflow.com/questions/56373532

复制
相关文章

相似问题

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