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

В основном я пытаюсь обновить старый код с устаревшими компонентами 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());
	}
...