October 30, 2017

fMP4 HLS ABR - live AVC and HEVC streaming in Nimble Streamer

Recently Apple announced the support for fragmented MP4, or fMP4, in HTTP Live Streaming protocol. This allows the content to be played in HLS without the need for the traditional MPEG-2 Transport Stream container.

Now proper support for fMP4 is available in latest versions of Apple's operating systems - iOS 11, macOS High Sierra and tvOS 11. So if your viewers have appropriate devices with latest OS updates you can use full power of HLS for live streaming.

Nimble Streamer is the first software media server which has full support for fMP4 in HLS for live streaming scenarios. Let's see what features of our products can be used to utilize that new capability.

fMP4 H.264/AVC live streaming


H264/AVC is fully supported in Nimble Streamer for all protocols that are able to carry it. As H.264 is the default codec for HLS, it's been in our server from the beginning, so now Nimble is capable of delivering it with fMP4 in live mode.

fMP4 HLS with H.264 can be generated by both transmuxing and transcoding. Nimble Streamer allows taking RTMP, RTSP, MPEG-TS, SRT, UDT and HLS as input with H.264.

Transmuxing engine of and re-packaging it to fMP4 of HLS. Whatever protocol is used, Nimble handles it equally efficient. You can read this article to see some examples of low resource consumption.

Live Transcoder allows generating the AVC content which is fully compatible with HLS via any container. It takes content via same protocols as transmuxing engine to perform further transformations. They include decoding with software decoder, Intel QuickSync or NVidia hardware accelerator. Having the decoded content, transcoder allows applying any available filters and then do efficient encoding. Encoding can be done with libx264, libVA, Intel Quick Sync or NVidia NVENC.

Transcoding scenarios control is available via drag-n-drop web UI dynamically without stream interruption. Just move scenario elements and apply settings - your users will see transformations in a few seconds.

Nimble Live Transcoder has low resource usage and high performance which you can see in a benchmark test with Tesla M60 made in IBM Bluemix Cloud Platform.

fMP4 H.265/HEVC live streaming


Nimble Streamer has wide support for H.265 (HEVC) in both transmuxing and transcoding. HEVC can be taken for processing via RTSP, MPEG-TS, SRT and UDT as input.

Transmuxing of protocols which contain HEVC is performed with the same highly efficient re-packaging engine as used for H.264.

Live Transcoder generates HEVC content fully compatible with fMP4. It allows decoding HEVC with software decoder, Intel Quick Sync and NVidia hardware. The encoding currently can be performed only on hardware using Intel Quick Sync and NVidia NVENC. All filtering and web control dynamic capabilities are available for HEVC the same way as for other codecs.

So HEVC content delivered with HLS can now be played on all compatible devices with latest OS updates.

Adaptive bitrate fMP4


One of HLS innovations is the ability to combine H.264/AVC and H.265/HEVC streams in the same adaptive bitrate stream. This allows using appropriate codecs for proper resolution according to products requirements.

Nimble Streamer provides an easy way to create and use ABR streams with this new capability. This process is described in ABR streaming setup article. You can see how you can combine streams and use them as you need.

Setup in Nimble Streamer


To generate fMP4-powered HLS streams, you can use any source of live streams supported by Nimble Streamer. Check instructions for use cases below:

To enable fMP4 streaming, on your Live Streams Settings page you need to select HLS (FMP4) checkbox. This will un-check "regular" HLS and HLS (MPEGTS). The first option generates standard HLS chunks. The second option can be used for audio-only streams with MPEG-TS chunks.
Warning! After you enable fMP4 for your application or for the entire server, its streams will be played well only on appropriate Apple devices. All other playback devices and software like Android or PC web players will not be able to play it. We recommend creating a separate application for fMP4 delivery if you have different target platforms for your streams. This may definitely change in future but for now you need to consider this factor.
In addition to fMP4 you can select any other supported output protocols as shown on a picture below.

Selecting HLS with fMP4
As in any other live streaming scenarios, the result output streams can be found in Nimble Streamer -> Live Streams page in Outgoing streams section. You can take a look at setup example in RTMP transmuxing article.

To set up and use adaptive bitrate streams with fMP4, follow the ABR streaming setup article.

DVR for fMP4


Nimble Streamer DVR feature set has full support for fMP4 recording and playback. So if you set up DVR recording for fMP4-enabled application or server, both MPEG2TS and fMP4 playback will be available simultaneously via different URLs. Both HEVC (H.265) and AVC (H.264) codecs are supported.

Transcoding for MP4


Regarding H.264/AVC or H.265/HEVC transcoding setup please refer to the links located on our Live Transcoder main page and our Transcoder setup video guides on YouTube.

Coming soon


We plan adding fMP4 support for VOD HLS later on. Feel free to contact us regarding any feedback or issues of this capability.

Related documentation


Nimble StreamerLive streaming with Nimble Streamer, HLS support in Nimble StreamerLive Transcoder, ABR streaming setup, Paywall feature set in Nimble Streamer, Nimble Streamer supported codecs

No comments:

Post a Comment