Showing posts with label fragmented. Show all posts
Showing posts with label fragmented. Show all posts

April 25, 2018

fMP4 ABR HLS for VOD AVC and HEVC streaming in Nimble Streamer

Last year Apple announced their support for fragmented MP4, or fMP4, in HTTP Live Streaming protocol. This enables HLS carry the content without traditional MPEG-2 Transport Stream container, which allows reducing the traffic by removing MPEGTS overhead.
The traffic saving is more than 10%, with 15%-20% on average. The all-favorite Big Buck Bunny showed 13% saving on using fMP4 compared to MPEGTS.

Nimble Streamer already had fMP4 support for live streaming, now we introduce fragmented MP4 support for VOD HLS.

This container supports H.264/AVC and H.265/HEVC video, with AAC, MP3 and AC-3 audio.

Setup


The setup for Nimble Streamer VOD streaming routes is made the same way as before, you can read this article for all details. The only difference is in the playback URL. Instead of "playlist.m3u8" name you will use "playlist_fmp4.m3u8" like this:
http://127.0.0.1:8081/vod/sample.mp4/playlist_fmp4.m3u8
When accessing the stream using that type of URL, the content will be automatically re-packaged on-the-fly to provide it in fMP4 container and the playlist will be made using proper standard.

The same applies to ABR streaming with SMIL files. You can set up ABR VOD HLS using SMIL and then use "playlist_fmp4.m3u8" file name like this:
http://127.0.0.1:8081/vod/abr.smil/playlist_fmp4.m3u8
This URL will also generate proper playlist and chunklists.

Playlists


The fMP4-based playlist generated by Nimble Streamer will look as follows.

H.264/AVC playlist for fMP4:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",AUTOSELECT=YES,URI="audio.m3u8?nimblesessionid=3"
#EXT-X-STREAM-INF:BANDWIDTH=1016419,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=424x240,AUDIO="audio"
video.m3u8?nimblesessionid=3
H.265/HEVC playlist for fMP4:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",AUTOSELECT=YES,URI="audio.m3u8?nimblesessionid=4"
#EXT-X-STREAM-INF:BANDWIDTH=1284765,CODECS="hvc1.1.6.L93.80,mp4a.40.2",RESOLUTION=1280x720,AUDIO="audio"
video.m3u8?nimblesessionid=4

The chunks list will be made the same way.


All Nimble HLS fMP4 streams can be played in latest versions of Apple's operating systems as well as in ffplay and JWPlayer. If you know of any other players or platforms, please share your comment about it.

Troubleshooting


Nimble Streamer internal transmuxer buffer sometimes may not be enough to fit generated HLS chunk. This may lead to this error in Nimble Streamer logs:
[tmux1] E: buffer is too small to generate
By default the buffer is 40MB. You can increase it using "vod_transmuxing_buffer". Read Nimble Streamer configuration description for config setup details.


If you have any questions regarding this feature set, please contact our helpdesk.

Related documentation


fMP4 ABR HLS for live streaming, DVR for fMP4 ABR HLS in Nimble Streamer, Nimble Streamer, VOD streaming in Nimble StreamerABR VOD HLS using SMILMP3 and AAC to HLS transmuxing.

November 20, 2017

DVR for fMP4 HLS with HEVC and AVC in Nimble Streamer

As our customers already know, Apple announced the support for fragmented MP4, or fMP4, in HTTP Live Streaming protocol.  Proper support is available in latest versions of Apple's operating systems.

Softvelum recently introduced live streaming fMP4 support in Nimble Streamer. It allows transmuxing of incoming streams with HEVC (H.265) and AVC (H.264) content. Nimble Streamer is the first software media server to have full support for fMP4 in HLS for live streaming scenarios.

Now we're the first to introduce full support for fMP4 DVR.

Nimble Streamer allows recording any incoming live streams with HEVC (H.265) and AVC (H.264) content to provide playback capabilities - with fragmented MP4 container in addition to existing MPEG2TS container.

The DVR setup is done the same way as before - read this DVR setup article for more details. It has no difference between AVC and HEVC content.

You can play fMP4 and MPEG2TS HLS DVR streams simultaneously with no need for additional settings - the only difference is in output URL. If you have a live stream name like
http://yourhost/live/stream/playlist.m3u8
then your MPEG2TS-based DVR stream URL will be
http://yourhost/live/stream/playlist_dvr.m3u8
To use fMP4 playback DVR stream, your URL will be
http://yourhost/live/stream/playlist_fmp4_dvr.m3u8
So you can provide proper links for different target device types according to their capabilities.

The ABR DVR stream for fMP4 would be played the same way - just specify ABR app name in URL with the same playlist name:
http://yourhost/live_abr/stream/playlist_fmp4_dvr.m3u8
Of course, it can also be used with MPEG2TS ABR streams.

With this new type of URL you can use all the same DVR features:

Watch DVR recording and playback in Nimble Streamer tutorial to get familiar with the most used features.

That's it - feel free to use this new feature a let us know if you have any questions regarding this functionality.

Nimble Streamer also supports fMP4 for VOD HLS for both H.264/AVC and H.265/HEVC content. It also supports ABR VOD via SMIL files. Read this article for more details.

Also notice that HLS DVR streams can be added to SLDP HTML5 Player for rewinding low latency streams. Read this article for details.

Follow us in social media to get updates about our new features and products: YouTubeTwitterFacebookLinkedInRedditTelegram

Related documentation


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.

Take a look at How to Create a Live HLS Feed With HEVC article by Jan Ozer which describes HEVC HLS streaming setup.

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.


VOD fMP4 HLS


Nimble Streamer also supports fMP4 for VOD HLS for both H.264/AVC and H.265/HEVC content. It also supports ABR VOD via SMIL files.
Read this article for more details.



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, Transcoder wildcard scenariosPaywall feature set in Nimble Streamer, Nimble Streamer supported codecs,  fMP4 for VOD HLS,