August 25, 2014

Transmuxing RTMP to Icecast with Nimble Streamer

Icecast remain a very popular protocol for streaming audio over the Internet. Numerous online radio stations use this way to deliver their content due to its simplicity and low overhead.

Nimble Streamer allows transmuxing any RTMP stream into Icecast stream. You may both pull existing RTMP or get published RTMP and produce stream with audio/mpeg MIME type output. Check also Icecast to HLS/MPEG2TS transmuxing and Icecast re-streaming.

This article also applies to other supported protocols like RTSP and MPEG-TS as Nimble has same transmuxing engine for all protocols.

To produce Icecast stream you need to follow these simple steps.

1. Install Nimble Streamer


Follow this easy to use instruction to set up Nimble Streamer instance.

2. Define RTMP settings


Now you need to describe how Nimble will take data from available RTMP source.

Go to Nimble Streamer / Live streams settings menu.

Global tab has service-wise settings.
Chunk duration sets the default duration of chunks for all outgoing streams.
Protocols field allow defining which protocols will be used for providing output streams. If you need Icecast use "Icecast" checkbox. You may have several types of simultaneous streams like HLS and Iceast or Icecast and MPEG2TS.



If you use published RTMP for further transmuxing, you may define Push login and password for applied to all incoming RTMP publishing by default.

These settings can be overlapped by individual applications settings. Click on Applications tab to see list of individual apps.

Applications' individual settings list.


Click on Add application settings to see a dialog for adding new app setting.

Adding new Iceast application setting.


If you pull RTMP streams for further transmuxing, the next tab you may need is Live pull settings. It allows defining live streams from multiple media sources.




Click Add RTMP URL to define new media source.

Adding new source of RTMP media.


Here you need to enter URL of RTMP stream and then application and stream name which you'd like to use for outgoing HLS stream.

List of individual RTMP pulled streams settings.

3. Use outgoing streams


Once the incoming streams accepted by Nimble, you will see the outgoing stream available in Outgoing streams page. Click on Outgoing link or Outgoing section on the streaming scheme picture.

List of ourgoing streams transmuxed from incoming RTMP streams.

Here you can see result streams available for your viewers. You can see its basic parameters of video and audio stream as well as bandwidth and resolution. In case of audio stream it has less details. To use the outgoing stream, click on URL for Player to see dialog showing URLs to insert into client's player.




If you select URLs for the protocols which you defined in global or application-wide settings. If your server has several IP addresses, there will be more URLs to use.


That's it. You may use it now for streaming and use full variety of reporting features to know more about your audience and your streams' popularity and performance.If you select several protocols in application of server-wise settings, or if your server has several IP addresses, there will be more URLs to use.
Having same application my produce URL for several media type like:

  • http://192.168.0.4:8081/sample/stream/icecast.audio - for Icecast
  • http://192.168.0.4:8081/sample/stream/playlist.m3u8 - for HLS output

You may also consider using RTMP streaming API and Icecast control API to control this behavior remotely. RTMP republishing is also available for scenarios of multiple edge servers live delivery.
You may also apply full featured Paywall framework for your audio streams.
To make sure your streams are available, set up Icecast streams monitoring with Dispersa.

Related documentation


August 22, 2014

Disaster recovery for Wowza agent

WMSPanel interacts with Wowza Streaming Engine agent via the "agent" - it's an add-on which is installed into Wowza. This agent is sending statistics data to WMSPanel service for further processing.

This interaction scheme assumes that a media server is constantly online and it keeps sending sync-up all the time. However, Internet is a complex infrastructure and sometimes some networks and entire countries become invisible to the global networks. In this case our agent was not able to send data which might cause data losses.

Now WMSPanel team introduces agent improvements to prevent data losses and recover from disasters like that. Here is how it works now.

  1. When Wowza is restarted after agent installation, this agent starts sending sync-ups
  2. If wmspanel.com is not available for some reason, agent still tries to reach it, trying to send sync-ups for several times.
  3. If the service in unavailable for a long time, then the delta for the most useful daily statistics are accumulated on the agent.
  4. When the service becomes available, the calculated data is sent and WMSPanel fills the gap between the moment when the server "disappeared" and current moment.

The following most useful daily statistics are saved and recovered:

  • Connections count - total and per-protocol;
  • Traffic;
  • Peak bandwidth - incoming and outgoing;
  • Average view time;
  • Total view time.

This is the most critical data often used for billing customers, that's why it's saved and recovered. With this feature your critical statistics are always safe and you can rely on WMSPanel daily reporting.

Let us know if there are any other WMSPanel data recovery and consistency concerns.

Related documentation


End user reporting for WowzaIn-depth statistics frameworkDaily statisticsBilling customers using daily stats

August 20, 2014

MPEG-TS over HTTP transmuxing to HLS with Nimble Streamer

Nimble Streamer can already take MPEG2TS over UDP and make HLS transmuxing to produce outgoing HLS stream. This allows accepting multicast and unicast UDP transmissions. Besides UDP, lots of devices and software solutions use MPEG-TS transmission over HTTP for variety of use cases.

Update:
 New article about MPEG-TS transmuxing to HLS, RTMP etc is available. Also, read general Nimble Streamer MPEG2TS feature set page.

Nimble can now accept MPEG2TS over HTTP to produce HLS. The output HLS can be used for single bitrate and adaptive bitrate HLS. Let's see step by step setup for incoming MPEG-TS stream.
  1. Using WMSPanel, define which MPEG-TS stream will be listening for incoming streams via HTTP. Those streams will be used as a source for generating outgoing streams.
  2. Define what outgoing streams will be generated from previously defined incoming streams. They can be used as fixed bitrate streams for your viewers and re-used as a source for ABR set up.
  3. If you'd like to create ABR streams, define adaptive streams using the variety of previously defined outgoing streams.
Nimble Streamer is getting the incoming stream and converting the MPEG-TS stream into HLS chunks. These chunks are being sent to the player right after the request comes in.

You may provide origin streams via HLS protocol, both with fixed bitrate and with adaptive bitrate. This diagram visualizes the described workflow.



Here's the step-by-step instruction for fixed bitrate and adaptive bitrate set up.


August 17, 2014

Publish RTMP from Wowza to Nimble for HLS transmuxing

Nimble Streamer is used for a variety of RTMP-related use cases. One of core scenarios is to produce HLS from published RTMP stream. Many customers use Wowza transcoder as a source for RTMP and Nimble edge servers to delivery content for end users. This allows offloading Wowza and have Nimble to handle all incoming requests easily.

Nimble Streamer supports this case perfectly so we'd like to describe how to set up Wowza to publish RTMP to Nimble Streamer.

The set up process consists of 2 steps - Nimble setup and Wowza setup.

1. Set up Nimble Streamer RTMP transmuxing


RTMP transmuxing can be configured as described in this article. Here is a brief visual guide to remind basic steps.

Start with "Nimble Streamer" -> "Live streams settings" menu.



You may overlap global settings by individual applications settings.



RTMP application setting.


Interfaces list.

Add new interface to get published RTMP stream.

For more details and explanations, read the original article.

When the interface is defined, you may publish stream from Wowza.

2. Set up Wowza RTMP publishing to Nimble


To publish your RTMP stream to Nimble Streamer, you need to install and set up PushPublishing add-on for Wowza.
Here's the description of PushPublishing configuration on Wowza website.

What you basically need to do is to follow 2 steps.

2.1. Edit Application.xml for designated live application to add these lines:

<Module>
    <Name>ModulePushPublish</Name>
    <Description>ModulePushPublish</Description>
    <Class>com.wowza.wms.pushpublish.module.ModulePushPublish</Class>
</Module>

2.2. Edit this file:
/usr/local/WowzaStreamingEngine/conf/PushPublishMap.txt
to add this line:
stream={profile:"rtmp", streamName:"test_stream", host:"localhost", port:1935, application:"live", userName:"test", password:"password"}
The PushPublishMap.txt file loaded dynamically so you can add and remove streams any time

That's it. The stream will then be published and Nimble Streamer will make further transmuxing to HLS. You may also use this stream to produce ABR HLS setup.
If you'd like to use RTMP for playback in Nimble, use RTMP playback streaming feature set.

If you have any difficulties with Wowza setup or if you need to define another source of RTMP stream for transmuxing via Nimble, please contact us.

You may also set RTMP republishing via Nimble Streamer itself so you can push RTMP further into Nimble-based network. For better flexibility, please also consider WMSPanel server tasks remote management via web console for convenient control of server-side commands. Launch any command, like ffmpeg process, with no need to log in via SSH, just an easy-to-use web interface.

Related documentation


Nimble StreamerRTMP republishing via Nimble, Republishing to Fastly CDNPay-per-view for Nimble StreamerTransmuxing RTMP to HLSAdaptive bitrate for RTMP to HLSPull RTMP to transmux into HLSHLS re-streaming set upRAM caching for effective re-streaming, Transmuxing RTMP to Icecast and ShoutcastTransmuxing HLS to RTMPRTMP playback streaming via Nimble

August 10, 2014

Utilizing all bandwidth with Nimble Streamer

Our customers use Nimble Streamer for wide variety of scenarios. Some of them use it in extreme use cases when they need to utilize all the bandwidth they have to serve their video to the maximum number of users. Since Nimble is very light-weight, it is possible to get the most of any network available long before running out of resources.

Recently our customer used Nimble Streamer to take all he can from his 10 Gbps channel. And he succeeded. Thousands of viewers were pulling 7 streams of various bitrates, mostly 1.5Mbps.

Here's what collectd monitoring shows, 10Gbps at peak.

Collectd stats.
WMSPanel stats shows similar numbers. The panel gets peak data number each 30 seconds so the data varies a bit from what we see in collectd chart.

Peak bandwidth as seen from Nimble Streamer perspective.

Nearly 13K connection were established within 15-minute intervals, you can see that on the screenshot below. Having in mind real-time monitoring during the event we can say that it had nearly 6000 simultaneous connections to this instance.

Retrospective chart for streaming event.


Did it go well for the host server which Nimble Streamer was running on? Yes, it feels fine. Check the charts for CPU and memory usage. CPU level for 8 cores was less than 40% and RAM amount grew up to 4GB on the topmost peak. The majority of RAM was used by OS networking according to "htop" output.

Nimble Streamer host server parameters.
Some fine tuning was made to get the most out the available hardware but not much.

This is one of the example of how Nimble Streamer can be used for creating high-performance streaming infrastructure. You may also take a look at Nimble's usage as part of large CDN and get familiar with live streaming use cases.

If you have any question regarding Nimble Streamer and its usage, just contact us any time.

Related documentation


Live streaming with NimbleTransmuxing RTMP to HLSAdaptive bitrate for RTMP to HLSPull RTMP to transmux into HLSNimble configs explainedCPU and RAM level alertsLive Transcoder for Nimble StreamerBuild streaming infrastructure with Nimble Streamer,

August 7, 2014

WMSPanel in-depth stats API

WMSPanel provides a wide variety of statistics for media servers. This includes In-depth statistics, or "Deep stats". This report gives a high detail picture of streaming, so no wonder that our users may need that for integration with their own assets management systems, administration consoles or public appearance.

This is why we introduce a pull API which will help integrating WMSPanel with any system which may need the streaming statistics. All you need to use it, is to make some setup on WMSPanel side and then make proper API calls using any programming technology you like.

Let's go step by step.

1. Set up API on WMSPanel side


To start using the API, you need to make small setup on WMSPanel side.

First, the API should be enabled by WMSPanel team, so please contact us to enable it for your account. Then you need to follow these steps:
  1. Go to Control menu -> API setup -> Pull API tab.
  2. Copy Client ID for further usage in your scripts.
  3. Click on "Generate New Key" to copy API key as well. This will be used for further authorization.
  4. Populate white list with IPs of the hosts where you will be making API call from, like your development machine or your web server. Just enter new IP and click on "Add IP to Whitelist" one by one.
Check this screenshot as a reference:

August 5, 2014

WMSPanel real-time stats API

WMSPanel is often used as part of complex streaming infrastructure. This may require interaction between various system parts hence the need for application programming interface (API). Our team previously introduced a series of APIs like daily statistics push API, pay-per-view framework and RTMP publish/unpublish notifications. Now it's time to provide more statistics.

This article describes the real-time statistics API. It allows getting the data which is used for drawing real-time chart on a client dashboard for data slice and for a given stream.

Let's follow these steps to get the info.

1. Set up API on WMSPanel side


To start using the API, you need to make small setup on WMSPanel side.

First, the API should be enabled by WMSPanel team, so please contact us to enable it for your account. Then you need to follow these steps:
  1. Go to Control menu -> API setup -> Pull API tab.
  2. Copy Client ID for further usage in your scripts.
  3. Click on "Generate New Key" to copy API key as well. This will be used for further authorization.
  4. Populate white list with IPs of the hosts where you will be making API call from, like your development machine or your web server. Just enter new IP and click on "Add IP to Whitelist" one by one.
Check this screenshot as a reference:

Setting up pull API parameters.

August 4, 2014

Streaming sports events with Rocksoft Cloud Media Solution and Nimble Streamer

The whole world spent 4 exciting weeks in June and July of 2014 watching the most anticipated premium sports event in the world. The most prestigious tournament brought a lot of attention and people from around the globe watched it via streaming both in real time and on demand.

Our team has also made a contribution to this festival of sports streaming.

Rocksoft Cloud Media Solution (RCM), the streaming project of Cloud CDN Sdn. Bhd., has used Nimble Streamer and WMSPanel as integral parts of their streaming network to perform this event streaming to one of its client.

RCM solid integrated platform is powered by several key elements such as Ethernet Fabric networking serving as a basis for self-forming, self-healing and highly resilient automated cloud network ensuring non-stop networking, traffic director anycast DNS technology allowing closest and best possible connection to the end-user and dynamic stream optimization to compress the video and provides superb video quality at lowest possible bit-rates allowing the stream to be played even in slow 3G mobile connection. And of course secure streaming servers running Nimble Streamer with excellent analytic in WMSPanel.

The initial video was taken directly from stadiums via live satellite downlink and ingested to RCM. After that the live stream was both delivered to viewers real-time and recorded for further on-demand watching. The major delivery protocol for end users was HLS (Apple’s HTTP Live Streaming) . Let’s see how this was handled.


Nimble Streamer as used in Rocksoft Cloud Media Solution.