February 20, 2019

DVR export to MP4

DVR feature set in Nimble Streamer provides streams recording and playback. Basic playback is available via a direct HLS or MPEG-DASH link as described in described in this article.

However you may need a "hard copy" of a recording which is just a MP4 file. It can now be exported via Nimble API call. Let's see how you can use it.

First, you need to set up Nimble Streamer to process direct API calls. Open API description page and read "Starting point: enable API access" section regarding the initial setup. You may also want to secure your calls as describe in "Option: Making authorized requests" section.

Second, you need to use this HTTP GET call to obtain the archive:
/manage/dvr/export_mp4/<app>/<stream>[?start=<epoch_time>&end=<epoch_time>]
The content of MP4 result file will be returned in HTTP response body.

The "start" and "end" parameters allow defining the time frame which is going to be exported, defined in seconds of Unix epoch time.


This command will get a portion of your archive:
curl -o archive.mp4 -v "http://127.0.0.1:8082/manage/dvr/export_mp4/live/stream?start=1542708934&end=1542712534" 

This one will download the entire archive: 
curl -o archive.mp4 -v http://127.0.0.1:8082/manage/dvr/export_mp4/live/stream

As mentioned above, the result will be returned as a body of HTTP response.
Also, take a look at JPG DVR thumbnails support and MP4 thumbnails support.

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

If you have any questions on this or other features, let us know.

Related documentation


Nimble Streamer DVR feature setDVR setup for Nimble StreamerLive streaming scenarios

February 10, 2019

RTMPS: SSL support for RTMP in Nimble Streamer

Today RTMP still remains the de-facto industry standard for publishing of live streams from encoders and their delivery between nodes over the Internet. Nimble Streamer has full support for this protocol in all 4 delivery modes - publish and get published stream, provide playback and pull streams.

Having a constant need for security for data transmission, our customers requested more security for RTMP delivery. So now Nimble Streamer supports RTMPS which is RTMP delivery over SSL in all 4 modes.

If you're not familiar with RTMP usage, please refer to RTMP feature set digest page.
If you already have some experience with Nimble Streamer setup, please follow the steps below to make adjustments to your current setup and use SSL for RTMP.

Set up SSL certificate


This step is required if your Nimble Streamer server will be providing RTMPS playback.

You need to set up SSL certificates via nimble.conf. Read this article to see what steps need to be followed. Notice that there is no need to set up ssl_port parameter for RTMPS as it's required only for HTTP-based protocols.

Receiving RTMPS


Setup is done the same way as it's done for un-encrypted RTMP: you need to add global or application setting and then define interfaces to receive stream.
The only difference is the interface setup - you need to check Use SSL parameter for interface via UI.


If you need to use both RTMP and RTMPS, you need to add 2 ports, one of them with SSL checkbox being checked. The rest of the setup is the same as for un-encrypted RTMP, read this article as example.

Also notice that Larix Broadcaster supports RTMPS publishing so you can use it for secure delivery from users' mobile devices to your streaming infrastructure.

Re-publishing RTMP over SSL


The re-publishing setup is also doesn't differ from common use case setup, except for specifying Use SSL parameter for port as shown below.


The rest of parameters are the same as for non-SSL stream setup described here.

Pulling RTMPS streams


Once you have RTMPS stream available via some URL, you can pull it by Nimble Streamer. Setting up RTMPS stream pull is set up the same way as it's done for un-encrypted RTMP. The only difference is the URL, you just need to use rtmps:// prefix and specify SSL port.
rtmps://192.168.10.11:1934/live/stream
You can see example here:


Other fields are used the same way as usual.

Providing RTMPS playback


Once you have your certificate ready as described in "Set up SSL certificate" section above, your RTMPS streams will be available as other RTMP stream. The only difference is rtmps:// prefix and a port number in URL, e.g.:
rtmps://192.168.10.11:1934/live/stream
Other than that there's no difference from common playback setup.

Notice that even though RTMP is a great way to publish streams, its playback scenarios will soon be declined by the industry due to Flash technology support discontinuity. So if you need real-time latency for live streams, take a look at Get ready for Flash farewell and RTMP decline article explaining to handle this shift. However, pulling and publishing capabilities will not go anywhere so you can use them as much as you need.

Also take a look at RTMP setup in Nimble Streamer video tutorial to learn more about basic RTMP scenarios.

If you need to change the outgoing content, like create multiple streams for ABR, use our Live Transcoder for Nimble Streamer to transform. It has high performance and low resource usage.

For other live streaming scenarios, check our live streaming use cases.

Related documentation


RTMP feature setLive Streaming featuresLive Transcoder for Nimble StreamerPay-per-view for live streaming,