我正在开发一个客户端-服务器应用程序,它将数据以块的形式从服务器发送到每个客户端。反过来,客户端接受该数据并立即将其传递给 rodio 进行播放。但是,当客户端收到属于新歌曲而不是上一首歌曲的数据时,rodio 将停止播放数据。
为什么我不能对不同的歌曲使用同一个源?如果我需要该功能,我该如何解决这个问题?
简单代码示例:
use std::{fs, io::Cursor};
fn main() {
let (_stream, handle) = rodio::OutputStream::try_default().unwrap();
let sink = rodio::Sink::try_new(&handle).unwrap();
let mut data = fs::read("guiro-sweep.mp3").unwrap();
data.extend(fs::read("on_the_moon.mp3").unwrap());
sink.append(rodio::Decoder::new(Cursor::new(data)).unwrap());
sink.sleep_until_end();
}
当我们运行这个程序时,我们看到第一个源播放成功,但是当第二个源应该开始播放时,程序终止。
尝试阅读文档,兄弟