No sound bug is caused by that OutputStream returned by rodio::OutputStream::try_default() is dropped immediately after Player::new() ends, so the sink attached to this OutputStream will not work.
According to this issue, currently there is no way to unstopped a sink, so we have to allocate a new sink in Player->start()
Random crash on some songs is caused that the HOST field of the request header does not match the URL. So we will get an error response instead of an mp3 file.
Changes I made:
Store OutputStream in Player to keep it not dropped
Store OutputStreamHandle in Player to allocate a new sink in Player->start()
Changes I made: