Make use of GStreamer buffering messages
Currently there's usually a short glitch after a second or two, this would be solved by implementing some buffering.
You can find basic code doing that here. Generally what you would do is
- Buffering percentage < 100: pause
- Buffering percentage == 100: play
- If not receiving any message at all: play
This does not apply only during starting of playback but over the whole time you're playing.