Исключение при воспроизведении файла AU в Windows 11, но работает в Windows 10 (тот же код) ⇐ JAVA
-
Anonymous
Исключение при воспроизведении файла AU в Windows 11, но работает в Windows 10 (тот же код)
Использование следующей программы для выполнения файла .au со звуком.
Скомпилировано и выполнено с использованием Java 17.0.7
В Windows 10 генерируется звук.
В Windows 11 возвращается исключение.
Исключение
Ошибка воспроизведения звука.
java.lang.IllegalArgumentException: нет интерфейса сопоставления строк. Формат клипа, поддерживающий PCM_SIGNED, неизвестная частота дискретизации, 16 бит, стерео, 4 байта/кадр, поддерживается обратный порядок байтов.
Вот код, который выполняется.
import java.io.File; импортировать java.io.IOException; импортировать java.util.Scanner; импортировать javax.sound.sampled.AudioFormat; импортировать javax.sound.sampled.AudioInputStream; импортировать javax.sound.sampled.AudioSystem; импортировать javax.sound.sampled.Clip; импортировать javax.sound.sampled.LineUnavailableException; импортировать javax.sound.sampled.UnsupportedAudioFileException; публичный класс SimpleAudioTest { Длинный currentFrame; статический клип-клип; Статус строки; AudioInputStream audioInputStream; статическая строка filePath; публичный SimpleAudioTest() выдает исключение UnsupportedAudioFileException, IOException, LineUnavailableException { аудиоInputStream = AudioSystem.getAudioInputStream(new File("C:\\Temp\\mySound.au").getAbsoluteFile()); Формат AudioFormat = audioInputStream.getFormat(); if ((format.getEncoding() == AudioFormat.Encoding.ULAW) || (format.getEncoding() == AudioFormat.Encoding.ALAW)) { AudioFormat tmp = новый AudioFormat( AudioFormat.Encoding.PCM_SIGNED, формат.getSampleRate(), format.getSampleSizeInBits() * 2, формат.getChannels(), format.getFrameSize() * 2, формат.getFrameRate(), истинный); audioInputStream = AudioSystem.getAudioInputStream(tmp, audioInputStream); формат = ТМП; } клип = AudioSystem.getClip(); clip.open(audioInputStream); clip.loop(Clip.LOOP_CONTINUOUSLY); } public static void main(String[] args) { System.out.println("Запуск теста"); пытаться { filePath = "Ваш путь к файлу"; SimpleAudioTest audioPlayer = новый SimpleAudioTest(); клип.старт(); Сканер sc = новый сканер(System.in); sc.закрыть(); } поймать (исключение ex) { System.out.println("Ошибка воспроизведения звука."); ex.printStackTrace(); } } } Есть ли что-то новое в Windows 11?
Использование следующей программы для выполнения файла .au со звуком.
Скомпилировано и выполнено с использованием Java 17.0.7
В Windows 10 генерируется звук.
В Windows 11 возвращается исключение.
Исключение
Ошибка воспроизведения звука.
java.lang.IllegalArgumentException: нет интерфейса сопоставления строк. Формат клипа, поддерживающий PCM_SIGNED, неизвестная частота дискретизации, 16 бит, стерео, 4 байта/кадр, поддерживается обратный порядок байтов.
Вот код, который выполняется.
import java.io.File; импортировать java.io.IOException; импортировать java.util.Scanner; импортировать javax.sound.sampled.AudioFormat; импортировать javax.sound.sampled.AudioInputStream; импортировать javax.sound.sampled.AudioSystem; импортировать javax.sound.sampled.Clip; импортировать javax.sound.sampled.LineUnavailableException; импортировать javax.sound.sampled.UnsupportedAudioFileException; публичный класс SimpleAudioTest { Длинный currentFrame; статический клип-клип; Статус строки; AudioInputStream audioInputStream; статическая строка filePath; публичный SimpleAudioTest() выдает исключение UnsupportedAudioFileException, IOException, LineUnavailableException { аудиоInputStream = AudioSystem.getAudioInputStream(new File("C:\\Temp\\mySound.au").getAbsoluteFile()); Формат AudioFormat = audioInputStream.getFormat(); if ((format.getEncoding() == AudioFormat.Encoding.ULAW) || (format.getEncoding() == AudioFormat.Encoding.ALAW)) { AudioFormat tmp = новый AudioFormat( AudioFormat.Encoding.PCM_SIGNED, формат.getSampleRate(), format.getSampleSizeInBits() * 2, формат.getChannels(), format.getFrameSize() * 2, формат.getFrameRate(), истинный); audioInputStream = AudioSystem.getAudioInputStream(tmp, audioInputStream); формат = ТМП; } клип = AudioSystem.getClip(); clip.open(audioInputStream); clip.loop(Clip.LOOP_CONTINUOUSLY); } public static void main(String[] args) { System.out.println("Запуск теста"); пытаться { filePath = "Ваш путь к файлу"; SimpleAudioTest audioPlayer = новый SimpleAudioTest(); клип.старт(); Сканер sc = новый сканер(System.in); sc.закрыть(); } поймать (исключение ex) { System.out.println("Ошибка воспроизведения звука."); ex.printStackTrace(); } } } Есть ли что-то новое в Windows 11?
Мобильная версия