In fact it's sf::Music that uses 2 seconds of buffer. sf::SoundStream doesn't impose such a limit: it's the derived class that chooses, implicitly with the amount of data given in the onGetData function. So it's really you who decides of the buffer size. Just keep in mind that there are 3 internal buffers: so while you fill one, there is one pending and one playing. So the latency is the size of two buffers, not one.