gpt4 book ai didi

java - 来自立体声但非两声道音频的 UnsupportedAudioFileException

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

我正在使用 AudioInputStream 在 Java 中进行一些基本的音频处理。我的程序可以正确加载用两个轨道编码的 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 channel 导致了此异常,但立体声应该是两个 channel ,不是吗?

我可以复制这个问题

AudioSystem.getAudioInputStream(new File("file under test"));

最佳答案

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

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

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

关于java - 来自立体声但非两声道音频的 UnsupportedAudioFileException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56373532/

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