Today, many services offer video streaming as both on-demand content and live streaming. While we’re all familiar with OTT on-demand content, such as Netflix or HBO, we don’t typically think of subscribing to live video content unless it’s related to sports or similar entertainment. In the past year, more channels have opened up for the viewing of live content, including those offered by Facebook and Youtube.
WillowTree recently developed live streaming for one of our clients across web and native platforms using Salix™, our proprietary platform for delivering video on demand (VOD) and Over-The-Top content (OTT). Here are some tips and tricks we found useful while engineering the product.
Keep on-demand and live stream content differentiated from each other visually. This sounds simple, but it’s important to do so in an obvious and consistent manner. Whether it’s an asset or a feature, users should know if the UI they’re interacting with is live or on-demand related. The use of symbols or animations to mark live content is recommended. Examples of common design indicators include a
LIVE label or a pulsing animation.
Another quality of live streams is their ephemerality; the content is time-sensitive and its period of existence is windowed. Upcoming live events should be visible well in advance, and display clearly what day/time the event goes live. Even if there is no stream up yet for a live event, make it actionable. Show the user a countdown to the start time rather than disabling any actions. Designs should make it as easy as possible for a viewer to get to the live stream on time.
Video player controls aren’t necessarily unique for live streams and on-demand content. If possible, your video player should not limit any functionality for live streaming. Users expect there to be a play/pause icon simply to put playback on hold - videos that cannot be paused on screen are a bad experience. If there is concern for the limited segments cached in the delivery of the stream, it would be better to force update the stream upon resuming the stream. Find a happy medium for how long to allow a user to pause and resume on the spot. If your content delivery does cache the entire live stream, it might be a good idea to keep the scrub bar within the player controls in your application. The fewer controls limited during a live stream, the better.
Implementing live streaming can be very similar or very different from implementing content on-demand. Decision factors include file formats, feed formats, delivery methods, and performance concerns.
If your on-demand content is delivered via a streaming protocol like Apple’s HTTP Live Streaming (HLS), Microsoft’s Smooth Streaming, or Adobe’s HTTP Dynamic Streaming (HDS), then the process for streaming live content may be almost identical. On the other hand, if your on-demand content is delivered via progressive download (which transfers an actual video file to the client or device), then changing your application’s process to account for live streaming (which transfers video in segments) may be rather complex.
Depending on whether or not the live content is delivered by the same service as your on-demand content (whether custom-built or provided by a third party), you may also have to account for different API formats or different streaming playlist/manifest formats. For example, one service might expect you to parse an XML-based Media RSS (MRSS) feed for a URL to a .m3u8 playlist, while another might serve you a JSON feed with a URL to a Synchronized Multimedia Integration Language (.smil) file that marks up a .m3u8 playlist with additional information.
You may also need to make basic adjustments to your application based on the data types or formatting that are expected for video duration and progress. Most live streaming services will deliver a real-time video with a duration of Infinity; if your application currently only expects a video duration formatted in minutes or seconds, you could end up with some unexpected logic handling. For the same reasons, you may also need to adjust the expectations of any analytics data you are collecting.
If you are lucky enough to plan ahead when architecting your video application, it’s wise to build in considerations for these differences. If not, it pays in dividends to build your application or platform in a modular fashion. While our Salix platform was not designed with live video in mind, the modular nature of its construction made it possible for multiple platforms to adapt playback and analytics to adapt to the unique concerns of live streaming.
The addition of live streams to an already existing on-demand service was an exciting project to work on. Our team is always happy to listen to the next product challenge to tackle. Contact us so we can work together to bring your ideas to life.