Direct HLS Video Streaming to M3U8
Looking to broadcast content in a manner that will give you an M3U8 file? This article outlines using direct HLS video streaming to create a useable M3U8 manifest file. Using this approach bypasses other methods from IBM Cloud Video such as our web based player, API based player offerings and our player SDKs. As a result, though, not all IBM Cloud Video features are available through this method.
To help guide content owners, this article discusses what is HLS and M3U8. It then outlines the benefits and uses cases for this approach, such as using third party players. It then covers features not available, letting content owners make an informed decision on their delivery strategy. Naturally, it also focuses on features still available, such as adaptive bitrate streaming.
- What is HLS?
- M3U8 files
- Third party players
- Creating a Roku channel
- Using HLS as a source for other workflows
- Built-in multiple CDN support
- Provisioning direct HLS video streaming
What is HLS?
HTTP Live Streaming (HLS) is a media streaming protocol. It can be used to deliver video and/or audio media over the Internet. In terms of video, it functions by taking MPEG-TS content and creating short video chunks, which are typically 10 seconds or less. As the name implies, these chunks are then delivered through HTTP. This makes the technology compatible across a wide range of devices and more easily supported for firewalls. Device support is where HLS really carved its early reputation, though. When Apple did not support Flash on their iPhones, resulting in the new famous open letter from Steve Jobs, a large struggle ensued to be able to create video content that could reach virtually any device. HLS, which perhaps unsurprisingly was developed by Apple, became this solution.
One of the strengths of HLS is not just compatibility, though. It is also able to adapt to the connection speed of the viewer. This is achieved through the server side creation of multiple bitrate and resolution combinations. These combinations can then be dynamically served to the viewer based on their connection speed. Switching between quality levels is done using the segmented video chunks as branch points. As a result, the stream can adapt changes in the connection speed. For example, if a mobile viewer watching a HD (high definition) stream leaves the range of a WiFi network, the quality can adjust. That way the viewer can keep watching at a lower quality rather than be stuck with endless buffering. This process is fleshed out in more detail in this Adaptive Streaming eBook.
If you have seen M3U8s mentioned before and were curious how it relates to HLS, it’s the file extension of this technology. An M3U8 is a UTF-8 encoded media playlist file. They are actually plain text files that have metadata to describe the content along with location information for each segment file. M3U8 files can reference local content stored on your computer, but for the purpose of HLS they will reference online files.
M3U8 manifest files are an important part of using your HLS video stream in additional ways. This goes beyond desktop software, such as a VLC player, to include online, third party players and the ability to support streaming media devices like Roku.
Third party players
Through using direct HLS, the door can be opened to utilize a player that is not IBM Cloud Video or Ustream based. While the provided solution by IBM Cloud Video has a lot of features, from real-time tracking to support for Flash fallback, there can be scenarios a third party player is preferred. This can include sunk costs from prior development but also general preferences for certain players. Another large reason for using a different player can be monetization options. These can be ad-based, subscription based or pay-per-view (PPV) models as well. Generally speaking these are easier to integrate into a third party player, without the level of security that comes included with the IBM Cloud Video player. That’s not to say that direct HLS video streaming is totally unsecure. In fact, the URL contains a signature, a hash composed with a secret token, to help control use. All the same, it’s not to the same degree of security that can be found in the default IBM Cloud Video player.
In that respect, below are some web players which support playback using M3U8s.
The Video.js player is an open source library for working with video on the Internet. They tout their solution as an HTML video player and support HLS. In fact, they have a demo of their player here that lets users insert an M3U8 link to test it out.
- JW Player
Having been around since 2005, many companies might have built solutions using JW Player. It includes customizations like plugins and skins as well. In addition, they support using HLS streaming through providing the URL of the M3U8.
This solution can be downloaded, uploaded and then used as a web player solution. It includes plugins as well to customize it. Support for HLS streaming, and the use of M3U8s, was added for the player back in 2014.
Touted as a simple, accessible HTML5 media player, Plyr offers a solution for developers to incorporate in their websites. In addition, it has support for M3U8s.
Creating a Roku channel
M3U8s can be a solution for those looking to develop an OTT (over the top) experience for devices like Roku. Below are two approaches to go about creating your channel from your M3U8, although there are additional services that can manage this.
Roku SDK Documentation
Roku provides software development kit documentation for developers to create their own channels for the Roku player. Written in the BrightScript scripting language, the documentation contains information about BrightScript and its component interfaces. For developers using the SDKs, a couple of formats are supported, one of which is M3U8.
Instant TV Channel for Roku
This offers a service to create private Roky channels without using the SDKs or APIs. It has both free and paid options as well. Created in 2012, the design of the dashboard has remained static although the service is continually updated. To use “Instant TV Channel for Roku”, there is a mode called “Direct Publisher – Publish Using a URL Feed”. In this mode, under the Content option, a user can input a “Stream URL”. This will be the address to the M3U8.
Using HLS as a source for other workflows
Another use case for direct HLS is open ended, as the M3U8 can function as a source as part of your overall workflow. This can function through a traditional satellite feed approach to being used as part of an IPTV (Internet Protocol television) solution, or even a hybrid solution that combines conventional satellite TV distribution with IPTV networks.
In addition, you’re open to utilizing this source in a variety of ways simultaneously. For example, you might take the M3U8 content and share that on your website from a VideoJS player, over your Roku channel and also outputting it for use as IPTV content.
Built-in multiple CDN support
Direct HLS, like other video distribution methods with IBM Cloud Video, has built-in access to multiple CDNs (Content Delivery Networks) that can be utilized to reach your viewers. As a result, global reach of your content is improved, as CDNs specialize in geographic areas. Scalability is also enhanced, as you have access to a larger infrastructure to deliver your content.
Please note, though, that direct HLS doesn’t have access to the complete SD-CDN (Software Defined Content Delivery Network) technology. So while it does have support for multiple CDNs, it lacks the ability to automatically and seamlessly switch between edges across CDNs while a viewer is watching. The reason is that the QoS (Quality of Service) components that control this are part of the player. This is documented in our Scaling Video Delivery to Reach Massive Audiences white paper.
In addition, IBM Cloud Video’s ECDN (Enterprise Content Delivery Network) technology is also not supported by the direct HLS method.
There are various features that are not supported while using direct HLS video streaming and M3U8s, beyond the changes in delivery highlighted above. Many of these are player specific, since aspects like the registration gate are done through the player. Some of these missing features may not be directly perceived as player related, though, such as the cloud based video trimming which does not work. This includes a lack of real-time analytics support. The Live Monitoring Console, which allows content owners to see usage and buffering reports in real-time, also does not work with direct HLS video streaming.
For general analytics, usage tracking for direct HLS video streaming is more limited. In the IBM Cloud Video dashboard, live streams count views and viewer hours. For video on-demand content, though, only the views are reflected. This is a far cry from the normal tracking found in the IBM Cloud Video dashboard, though. Normally it can show engagement lining up viewership to specific moments in the video. This not only shows viewer retention, but if a specific instance caused viewers to abandon the content.
Provisioning direct HLS video streaming
Currently, direct HLS video streaming is available for enterprise level IBM Cloud Video users only. In order to get access, please reach out directly to your Customer Success Manager.
Direct HLS video streaming increases the flexibility of the IBM Cloud Video services. While many content owners will elect to use the default player, which is better enhanced for scalability and analytics, others will take advantage of using M3U8s for previously invested developments or branching out to reach Roku devices or broadcast content through an IPTV network.
Interested in direct HLS video streaming and don’t have an account, or not sure if your current account is at the right level? Contact us to learn more.
via Streaming Video Blog http://bit.ly/2pufr9a
September 21, 2017 at 05:16PM