Plum iTV Media Engine consists of several elements: Plum iTV Streamer, Plum iTV Load-balancer and Plum iTV Storage.
After streams are transcoded with Transcoder, next step is Streamer that besides streaming towards subscribers, do video manipulation - recording for CatchUp and TimeShift, but also for subscriber recording - nPVR. Streaming server streams content to subscribers, using diﬀerent protocols, load-balancing mechanisms, CDN infrastructures…
TimeShift, BuﬀetTV, CatchUp and nPVR are recorded on a NAS (Network-Attached Storage) storage and its content is available for subscribers. Transcoder sends streams via multicast to the Streamer. All streams are cached on Streamers for 30 seconds and used for LiveTV for Multiscreen. Multicast streams from Transcoder for Multicast LiveTV for STB devices can be sent directly to the subscriber, outside of IPTV system.
Streamers will store these .ts ﬁles after 30 seconds on the Storage for purpose of non-linear services (CatchUp, TimeShift, BuﬀetTV). Packager, which is part of the Streamer, segments UDP streams from Transcoder into chunks of 4 seconds, which are packed into .ts ﬁles.
After these ﬁles are stored, when requested for TimeShift or CatchUp/BuﬀetTV services they are sent to the Streamers. These .ts ﬁles are encrypted using sample level encryption. References to the corresponding key ﬁles appear in the playlist ﬁle so that the player can retrieve the keys for decryption.
Plum iTV Load-balancer is responsible for assignment of Streamers to subscribers. Plum iTV Media Engine is scalable solution and it can form a CDN (Content Delivery Network) structure. The number of Streamers increases linearly with the increase of number of subscribers. To minimize the distance between subscribers and Media Engine, a CDN stores a cached version of content on diﬀerent Streamers, in multiple geographical locations POPs (Points of Presence). Each POP contains a number of Streamers responsible for content delivery to subscribers within its proximity.
For VoD, an oﬄine Transcoder is needed to transcode all diﬀerent codecs to H.264 and AAC, and to .mp4 containers. Files are stored on the storage server and streamed to Streamer when requested by a subscriber. Streamer repackages them on-the-ﬂy into HLS or MPEG-DASH and streams to subscribers.
VoDs can be stored on storage server in two ways. One case is when recording of VoD is in one format, e.g .mp4, and then packaged on-the-ﬂy for diﬀerent streaming protocols. This case has support for diﬀerent kinds of streaming protocols (HLS, MPEG-DASH…) using only one type of ﬁle on storage server saving storage space and then repackaging into requested protocol on-the-ﬂy.
Other case is when content is stored in format that is used for streaming, if the system doesn’t require diﬀerent streaming protocols. In this case ﬁles on storage sever are already saved in .ts ﬁles and then directly streamed as such. But then each type of ﬁles would have to be stored if there are diﬀerent kinds of protocols being used, which increases number of ﬁles on the storage server.