Audio/video players can be playing or paused. Streaming AV players, however, have a third state: Waiting. Waiting is like paused in that the content isn’t being played. In the wait state, however, playing will begin as soon as possible. Unfortunately, this third state isn’t directly exposed to the user.
Often the user can’t definitively distinguish this state. If the player is waiting and the user activates the play/pause control, what should the player do? Often the user can’t move the player between the paused and waiting states, and I know at least one user who often wants to.
There’s another wrinkle. Most players don’t switch from waiting to playing as soon as possible. Instead, they use heuristics to try to ensure that they have enough content buffered to prevent having to fall back into waiting. This is a good thing, but it means that waiting is actually two new states: Waiting and buffering. When the heuristics fail, it is reasonable to allow the user to override them, forcing a transition from buffering to playing. Some players give the user this ability, while others do not.
That’s the basics of the situation. Maybe sometime I’ll put together a chart of the states and figure out what should be communicated to the user and what controls should be provided to the user.