我想使用JavaFX媒体播放器实时播放麦克风输入(分析其频率)。问题是,MediaPlayer只接受字符串作为源。我知道如何将麦克风输入写入字节数组和文件。
不能将字节数组用作MediaPlayer的源。我尝试使用临时文件,但这会导致以下错误:
Exception in thread "JavaFX Application Thread" MediaException: MEDIA_UNSUPPORTED : Empty signature!
我认为这是,因为我使用一个文件作为输入,而我仍然在向其中写入新数据。直到现在我的完整代码:
public class Music {
static AudioFormat format;
static DataLine.Info info;
public static void input(int i, int j, int pinState) {
format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100, 16, 2, 4, 44100, false);
try {
info = new DataLine.Info(TargetDataLine.class, format);
final TargetDataLine targetLine = (TargetDataLine) AudioSystem.getLine(info);
targetLine.open();
AudioInputStream audioStream = new AudioInputStream(targetLine);
File temp = File.createTempFile("Input", ".wav");
<