我正在使用AudioInputStream. 我的程序可以正确加载用两个音轨编码的 16 位整数 PCM 音频,但不能加载立体声。当出现一个文件时(根据 ffprobe)是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一切安好。然而,当出现 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(这是我真正想要编辑的文件),它失败了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)编码是相同的,采样率差异似乎不太可能导致问题。似乎是立体声与 2 个通道导致了这个异常,但立体声应该是两个通道,不是吗?我可以复制这个问题AudioSystem.getAudioInputStream(new File("file under test"));
1 回答
jeck猫
TA贡献1909条经验 获得超7个赞
AudioFormat
您可以手动构建相应的并使用isFormatSupported(AudioFormat)检查它
对 44100 的支持在 Java 中是标准的,但 48000 更随意,并且取决于运行代码的计算机的操作系统。请参阅6.3 音频格式
如果您不想麻烦编码复杂性,Audacity 可以很好地作为转换音频资源的工具。
添加回答
举报
0/150
提交
取消