JavaFX AudioClip MEDIA_UNSUPPORTED: нераспознанная подпись файла, обновление устаревшего кода

По сути, я пытаюсь обновить старый код с устаревшими компонентами java-апплета до javafx, я думаю, что основная проблема по какой-то причине в том, что аудиоклип javafx не поддерживает файлы ".au", и я получаю эту ошибку, я бы хотелось бы узнать, есть ли в любом случае это исправить / использовать другие способы воспроизведения аудио в javafx без фактического преобразования типов файлов.

оригинальный код:

import java.applet.*;

public class AnnounceTimeOnSeparateThread implements Runnable{
 private AudioClip[] hourAudio = new AudioClip[12];
 private AudioClip[] minuteAudio = new AudioClip[60];
 private AudioClip amAudio = Applet.newAudioClip(this.getClass().getResource("/audio/am.au"));
 private AudioClip pmAudio = Applet.newAudioClip(this.getClass().getResource("/audio/pm.au"));
 private int hour;
 private int minute;
 public AnnounceTimeOnSeparateThread() {
  for (int i = 0; i < 12; i++)
   hourAudio[i] = Applet.newAudioClip(this.getClass().getResource("/audio/hour" + i + ".au"));
  for (int i = 0; i < 60; i++)
   minuteAudio[i] = Applet.newAudioClip(this.getClass().getResource("/audio/minute" + i + ".au"));
 }

 public void setHour(int hour) {
  this.hour=hour;
 }
 public void setMinute(int minute) {
  this.minute=minute;
 }
 public void run() {
  try{ 
   hourAudio[hour % 12].play();
   Thread.sleep(1500);
   minuteAudio[minute].play();
   Thread.sleep(1500);
   }catch (InterruptedException ex) {
   }
  if (hour < 12)
   amAudio.play();
  else
   pmAudio.play();
  }
 }

моя обновленная попытка с ошибкой: (в основном незначительные изменения, просто изменив ее на синтаксис fx и импортировав)

import javafx.scene.media.AudioClip;

public class AnnounceTimeOnSeparateThread implements Runnable {
 private AudioClip[] hourAudio = new AudioClip[12];
 private AudioClip[] minuteAudio = new AudioClip[60];
 private AudioClip amAudio = new AudioClip(this.getClass().getResource("/audio/am.au").toExternalForm());
 private AudioClip pmAudio =new AudioClip(this.getClass().getResource("/audio/pm.au").toExternalForm());
 private int hour;
 private int minute;

 public AnnounceTimeOnSeparateThread() {
  for (int i = 0; i < 12; i++)
   hourAudio[i] = new AudioClip(this.getClass().getResource("/audio/hour" + i + ".au").toExternalForm());
  for (int i = 0; i < 60; i++)
   minuteAudio[i] = new AudioClip(this.getClass().getResource("/audio/minute" + i + ".au").toExternalForm());
 }

0 ответов

Другие вопросы по тегам