我试图在java上播放rpi音频。我正在建立一个聊天机器人,所以这是一个text2speech部分。我试过通过aux,hdmi引导声音,甚至usb也没有改变问题。
对于USB音频,我尝试过:this guide
我有很多问题。有谁知道如何以一致的方式使用rpi播放音频(wav或flac)文件?
系统信息:
我尝试过的不起作用:
正常的Java方式(在我的机器上运行):
try {
final Clip clip = (Clip) AudioSystem.getLine(new Line.Info(Clip.class));
clip.addLineListener(new LineListener() {
@Override
public void update(LineEvent event) {
if (event.getType() == LineEvent.Type.STOP)
clip.close();
}
});
clip.open(AudioSystem.getAudioInputStream(queue.remove()));
clip.start();
} catch (Exception e) {
e.printStackTrace();
}
我尝试过的半成品:
启动流程并通过omxplayer或aplay播放
try {
process = Runtime.getRuntime().exec("aplay " + file.getAbsolutePath()); // or omxplayer
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((reader.readLine()) != null) {}
System.out.println("waiting");
process.waitFor(120, TimeUnit.SECONDS); // timeout sometimes
System.out.println("done waiting");
process.destroy();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
这可以工作几次,然后突然停止播放,这个过程就会挂起。即使我在PID上执行killall / kill -9,如果我尝试从终端播放,此时也会发生相同的情况。我必须重新启动才能再次播放音频几次。虽然我确实看到process.destroy()并不总是杀死进程?但除此之外,我无法理解为什么这不起作用。
任何人都可以对此有所了解,可能还有如何让它发挥作用?