3 Ways to Synchronize Live Stream Data Events with Adobe Media Server
An important difference between traditional broadcast television and an internet stream is the ability synchronize data events online. This could be everything from game statistics, to companion information, and external links that relate to the current live content.
- The events need to be in sync with the live event
- It needs to remain in sync, no matter what the buffer and network conditions are
- It needs to be CDN and firewall compatible
There are 3 ways to achieve this with Adobe Media Server.
AMF cuepoints are injected messages and part of the FLV container, which is in the core of the RTMP and HDS protocols. A cuepoint is fully configurable in terms of name and value, can be injected via an encoder or Adobe Media Server, and received via NetStream or OSMF on the client. To learn more about this approach, read my 2008 Devnet article.
onFI are name standardized cuepoints, and contain the absolute timecode injected by the encoder in configurable intervals. As example, you can send an onFI event every 10 frames, or every 30 frames – with the proper AS logic, it’s easy to interpolate between those cuepoints. Here is an example how to receive onFI messages with OSMF.
Adobe Media Server also allows to use absolute time code within the actual streams. This is mostly used to synchronize streams, or to better support DVR recording, but it’s also possible to get access to absolute timecode on the client-side via HDS. It’s not a standard OSMF interface, but possible to extract with some additional work.
Overall the onFI cuepoint approach is the most popular, since it’s very easy to use, and supported by the popular encoders.