Some businesses want to control their streaming process on per-user and per-stream level in addition to general protection methods like hot-link protection or geo restriction limitation. This is required especially for pay-per-view (PPV) systems where viewers pay for accessing the media.
WMSPanel and Nimble Streamer provide a framework which allows collecting detailed data for all connection and making decision to allow or deny each connecting user. This may be used for pay-per-view and pay-per-minute logic, calculating each user simultaneous connections, stats for unique visitors and much more.
These are the steps for a customer to integrate those capabilities into customer's workflow:
WMSPanel uses
push API.
Nimble sends requests to customer's handler. This handler must be accessible via HTTP/HTTPS and it must be able to accept POST requests. Those requests may be formed via either
JSON or XML,
this can be set up in WMSPanel settings.
Handler needs to do a few things:
Please check a basic handler example for PHP. It just takes incoming request, logs it and returns a couple of IDs to be blocked. You should take a look at full JSON request example and a handler response sample as well.
Now we need to set up a link between Nimble Streamer instances and the handler. Select
Control / API setup
menu and select
Push API tab
which is the one we are going to use now.
Define the following:
In order for Nimble to start sending requests, some changes must be made on your web server side. Media URL needs to be modified to include special signature, that would contain required information.
For example, you have this URL for your live stream:
http://video.wmspanel.com:8081/vod/sample.mp4/playlist.m3u8
The modified URL would be:
http://video.wmspanel.com:8081/vod/sample.mp4/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9NS80LzIwMTIgODozMzowNSBBTSZoYXNoX3ZhbHVlPXE3MjN6aEVmdGFUOUJoWjBQTmw1TVE9PSZ2YWxpZG1pbnV0ZXM9MjA2
To generate signature you need to modify your front-end source to include code snippet.
Click here to see the sample code.
You can find all samples in WMSPanel github repository and adapt them for your use case.
Two important things must be specified here:
To define restriction settings on server side, Nimble Streamer must be notified about it. The set up is made via WMSAuth paywall setup.
In WMSAuth, every restriction may be applied to a group of servers. So the first thing to do is to create a group and assign one or more Nimble servers to it. Check this screenshot for details.
Within a group, there may be several rules, each working with its
set of streams.
Just click on "Add rule" to enter rule creation page.
See how you can specify Nimble
streams
regular expression on the screenshot below.
Now you need to specify
a key, or password,
which was inserted into the media signature on web server side in section "Make PPV signature" above.
After you save the rule, it will be applied to the server within a few seconds.
The debugging handler and interface allows receiving data from servers and viewing results via your browser. Use it to see what requests will come from your server instances to your own handler.
Now when the chain is set up you will be receiving updates on current streaming status. As response you can send back the blocked IDs list and so control your streaming workflow.
This functionality also works fine with geo-location and IP ranges restriction
The Paranoid’s Guide to Internet Video Streaming by Thomas Gires is very useful to see real-life example of using pay-per-view feature set for HLS re-streaming via light-weight edge.
Nimble Streamer will send requests and receive responses for pay-per-view framework regardless of WMSPanel availability. If your server can't connect to WMSPanel for some reason, this functionality will still work perfectly. Once the handler settings are set up, the control panel is not used anymore.
Check the paywall FAQ. and search through our documentation to find more information.