Previously with HTTP Dynamic Streaming (HDS), there has been no way to distinguish between (a) the encoder shutting down due to a server-side failure and (b) the encoder shutting down because the event stream is complete. This is the "doneness" problem.
Using OSMF 2.0 with Flash Media Sever (FMS) 4.5.2, the framework recognizes that HDS content has lapsed as a result of reaching the end of the bootstrap file. OSMF does so by interpreting the presence of the null terminator in the fragment run table to mean that the event really is done. A missing null terminator is interpreted to mean that the event is not done. OSMF 2.0 provides this information to your player, so it can react accordingly.
OSMF 2.0, used with FMS 4.5.2+ and the server-side Control Plane module, enables the Doneness capability by default. No client-side configuration is necessary for its use.
When a player reaches the end of content (the final fragment listed in the bootstrap) AND the stream is done (OSMF finds a null terminator), the following steps occur:
- Player plays out the remaining buffered content.
- OSMF sends a NetStatusEvent.NET_STATUS event of NetStream.Play.Complete.
- OSMF sends a TimeEvent.COMPLETE event.
- Player stops playback.
- Player stops refreshing the bootstrap.
If a player joins a stream that is already done, no content is played back. A notable exception here is DVR, in which case the player is allowed to seek or play the recorded content.
When playing back live content, it is possible for playback to stall due to a packager or encoder failure on the back end. OSMF has the ability to detect and report such a problem. When a live stall is detected, the MediaPlayer will fire a PlayEvent.LIVE_STALL event. When playback resumes, the MediaPlayer will fire a PlayEvent.LIVE_RESUME event. One possible usage of this event is to attempt failover to a backup server upon receipt of a LIVE_STALL event.
Generally, OSMF will report live stalls when the end of the bootstrap is reached for a bootstrap that is not null terminated. The actual conditions used within OSMF are more complex in order to prevent false positives.