December 25, 2011

Clouds and virtuality for Wowza and WMSPanel

Virtual services and cloud computing become more popular during last few years. No surprise that some resource-consumption solutions and products has been recently exploring that opportunity.

As example, Wowza Media Services provides Amazon AWS installation for those who wants to create scalable streaming solutions. There are many other companies that provide similar functionality. This gives a low threshold for companies that want to try providing streaming services. For mature companies this also allows re-structure their assets and increase overall robustness. You can even make your own cloud using software like Parallels solutions to be independent from 3rd-party vendors.

WMSPanel also uses this technology, we chose Rackspace for both staging and production environment. And of course it works fine with Wowza Media Server on Amazon EC2.

Please also read more about our current cloud architecture.

The pros of cloud solution for us are simple.
  1. Ready to use environment. No need to buy or rent a hardware when we need it. It's already there because virtual machines are always available.
  2. Scalability is a big advantage. When a large customer starts some free evaluation (since first 2 weeks are free of charge) we may see some overload. In this case we can just switch to another service plan to keep our customers out of trouble and to have plenty of time to optimize things.
  3. When a customers wants a separate branded instance of WMSPanel, we can setup a virtual machine that will handle his own requests without any intersection with other customers.
The only contra is that pricing plans are missing granularity, i.e. in case of increased consumption we have to buy more than we actually need. This means extra stability for our customers but a bit bigger price for us.

Given all pros and cons we can already say for sure that optimization has its cost, literally. When we optimize our software, we can see numbers that say how much we cut down our expenses and hence what service price may be optimal for our customers.

This also means that we may provide agile customers pricing. And cost becomes much lower as long as we keep implementing and improving WMSPanel.

WMSPanel cloud control is also used for controlling Nimble Streamer, a light-weight HTTP streaming server for HLS, Smooth and progressive download streaming and re-streaming.

November 21, 2011

Windows Media: adding publish points

Greetings!

Recently we've deployed a new WMSPanel feature for Windows Media Services. Some customers wanted to be able to add publish points via our web interface. WMSPanel is already able to control server behavior - starting and stopping servers. So now our customers are able to add publish points as well.

Currently both broadcasting and on-demand publish points are supported.

To add a publish point, a customer admin should go to a server page and click on "Add publish point". Then enter a name, a path to a source within a server and choose PP type. Click "Add publish point" button to perform the addition.

Adding a broadcasting publish point for WMS
Adding on-demand publish point for WMS

That's it. Once a publish point is added, it data will be available on graphs.

Read our blog for more information on current and upcoming features. Contact us for more information.

November 10, 2011

WMSPanel architecture from scalability, security and usability perspectives


When we initially started working on system architecture our main ideas were like described below. Note that the industry term "design" often refers to "architecture" and so will we.
  • Make our system as secure as possible. Security is a very complex task in case when your servers are accessible from Internet. When we started to think about WMSPanel development we checked current solutions publicly available and found out that most of them were desktop applications. From technically point of view this means that desktop application requests information from media servers and presents to a user. So media server should seat and wait for user request and provide necessary information. Most solutions install RDMS on media servers to save and process statistic for the media server. Currently almost all analytic and control media solutions have been moved to the web. But almost all of them still have old design. Their control panels initiate connections to media servers and load logs and perform server related operations. This is a very pure POOL system architecture that forces your system administrator to add additional rules to open additional control ports on media server. In additional your web site cannot process media server data when it want to send it to you. Media Server should seat and wait when web site is ready to call it. In addition, a "pool" architecture has a very bad scalability. If you have 1000 servers you need to call all of them and you should have very clever scheduler to process servers in time. Our solution has a PUSH architecture. When Media Server is ready to push some new data to a panel, it just does that. If there's nothing to say - it can stop sending for some time. In addition, our clients' admins don't have to open additional control ports. We also use industry proven HTTPS protocol to send our data to a panel. We don't even have an option to use HTTP to do that. Both wmspanel.com and on-site client's installations MUST have a valid SSL certificate and the system doesn't have an option to suppress this. Your data will not be accidentally sent to a wrong server or cannot be cought and decrypted. Server registration procedure is very secure as well and use HTTPS to register server. Solution accept only valid certificate during registration. Panel web-site use the same certificate so when you want to work with your servers you are under the shield as well.
  • Make installation process as simple as possible. We don't want our clients' admins to play with configs, to manually copy solution libraries etc. We tried to do all necessary things during the installation. We are proud that we spent a lot of time but made installation process as simple, clear and secure as it is.
  • Support all versions of media servers we integrate with. Support them on all platforms where media servers works for all supported architectures. Currently we support Windows Media Server and Wowza Media Server. This means that if you have one or both you can use our solution regardless of their versions.
You can already tell that our architecture goals were achieved in current system implementation.

Please also examine our current cloud architecture.

November 7, 2011

Wowza and WMS geo-location is now available

Greetings!

Update. We now have daily geo-location report for Wowza including both countries and cities.

WMSPanel now has a geographical location data display from our roadmap. It's available for both Wowza and Windows Media Services installations.

It displays geographical statistics for real-time charts. Each server displays its own stats when being chosen from servers' list. Currently only top 10 countries are displayed as it's the most notable info required by most administrators.

Geo-location for top 10 countries (click for full size)

Example of 4 countries limited broadcasting (click for full size)


We're working on showing retrospective charts info and complete list of countries and their streams count. Stay tuned for new features' announcements and request us other useful features that might work well for you.


This product includes GeoLite data created by MaxMind(c), available from http://www.maxmind.com

November 2, 2011

Wowza Media Server client types supported by WMSPanel


Currently we support all client types what Wowza Media Server supports.

HTTP types
  • Flash HTTP Streaming known as HTTP SAN JOSE
  • Apple HTTP Live Streaming (Cupertino Streaming - iPhone, iPad, iPod touch) known as HTTP CUPERTINO
  • Smooth Streaming (Microsoft Silverlight) known as HTTP SMOOTH
RTSP
RTSP/RTP/MPEG-TS (QuickTime, VLC, mobile devices, set top boxes, encoders)

RTMP
Real Time Messaging Protocol (RTMP - Adobe Flash Player)

For all streams you will see client type and you will be able to analyze how your customers access to your streams.

November 1, 2011

Can I add both Wowza and Windows Media server to the panel?

Sure you can !

Just follow instructions for Wowza to add Wowza server and use instructions for Windows Media Server to add WMS. You will see common statistics for both server types.

Just register, try it and let us know what you think about our panel capabilities.

October 19, 2011

Wowza released patch for 3.0.0 (patch3)

This morning I got a message from Wowza Team that they released critical patch for recently released server. I loaded and applied the patch and checked that my application works fine. I also took a look at revision history and see that actually this patch was not the first.

Current patch version is 3 but there are also patch2 and patch1 with a lot of issues fixed.
I didn't receive notifications about 1 and 2 patches so thanks to Wowza guys they informed us about major changes in the product. Patch3 includes all changes so just apply it to be updated.

October 12, 2011

WMSIPAuth plugin is now available

Greetings.

As you know Windows Media Services come with a great built-in functionality. However, some of the basic features are made not in a very convenient way. As example, IP-based authentication can be set up via GUI tool; it's not convenient to use on a large amount of IPs and it also works really slow in such case.

That's why we made a plugin that allows restricting access to WMS via a simple configuration file where all those rules are written down like this:

1.6.0.0/15
1.22.0.0/15
1.38.0.0/15
1.186.0.0/16
1.187.0.0/16

Current implementation works really fast even on dozens of thousands of IP ranges listed in a config.
Trial version of WMSIPAuth plug in is available for download. It's free or charge and it currently has a restriction of 5 IP ranges to be restricted.

However if you need more IP ranges capacity or have some extended functionality like allowing only certain IPs instead of restricting them, or even have geo-location based restriction, you can contact our teamto discuss terms and price of such solution.

October 10, 2011

Wowza 3.0.0 is available to download

Wowza Media System has recently announced Wowza Server 3.0.0, the next version of their award winning solution.

I've checked our product and our Maven template implemented for 2.2.4.
Everything works fine and you don't even have to replace Wowza jars in template lib since Wowza 2.2.4 and 3.0.0 look like being backward compatible (at least in case of our product).

Just don't forget to change Vm settings for debug.
On 2.2.4 use
-agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:4300 -Xmx768M "-Dcom.wowza.wms.AppHome=C:/Program Files/Wowza Media Systems/Wowza Media Server 2.2.4" "-Dcom.wowza.wms.ConfigHome=C:/Program Files/Wowza Media Systems/Wowza Media Server 2.2.4" -Dcom.sun.management.jmxremote=true -Dfile.encoding=Cp1251 -classpath "C:\Program Files\Wowza Media Systems\Wowza Media Server 2.2.4\bin\wms-bootstrap.jar" com.wowza.wms.bootstrap.Bootstrap start
And on 3.0.0 use
-agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:4300 -Xmx768M "-Dcom.wowza.wms.AppHome=C:/Program Files/Wowza Media Systems/Wowza Media Server 3.0.0" "-Dcom.wowza.wms.ConfigHome=C:/Program Files/Wowza Media Systems/Wowza Media Server 3.0.0" -Dcom.sun.management.jmxremote=true -Dfile.encoding=Cp1251 -classpath "C:\Program Files\Wowza Media Systems\Wowza Media Server 3.0.0\bin\wms-bootstrap.jar" com.wowza.wms.bootstrap.Bootstrap start


P.S. Please check Wowza patch 3 information before using 3.0.0 for production purposes.

P.P.S. Please also check other Wowza-related posts from our blog.

October 5, 2011

Maven template for Wowza

First of all let me explain why I decided to develop WMSPanel Wowza integration using Maven.
When I started my first steps with Wowza I downloaded Wowza IDE and easily made my first test project. All looked just fine but after some time I decided that Wowza IDE is not applicable in my case because of the following reasons.
  1. It does not support full development cycle. You can create Module or Listener but you cannot create and run Unit Tests, cannot add dependencies that will be copied with your jar before Wowza launch.
  2. After any change of any source file IDE tries to build jar and copy it. I want to have ability to implement some features and then build jar and copy it explicitly.
  3. There are a lot of libraries we cannot work in general. Apache langs and codacs, joda time library. Those who work with Java professionally knows what I'm talking about. Maven is just great when you need to add publically available libraries.
  4. You cannot control jar manifest produced by IDE. If you need your jar to have some additional attributes you should use Maven. Wowza IDE cannot help you here.
Wowza IDE produces regulair jar file with our compiled classes included so we use maven-jar-plugin for making jar library as well.

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <finalName>${project.artifactId}</finalName>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>${libFolderName}/</classpathPrefix>
                        </manifest>
                        <manifestEntries>
                        </manifestEntries>
                        <addMavenDescriptor>false</addMavenDescriptor>
                    </archive>
                </configuration>
            </plugin>

Since your library most probably needs to have dependencies you should separate your dependencies from Wowza server libraries and third-party libraries. This is why we add classpath to our dependency folder into jar manifiest. In addition we ask not to include our pom.xml to resulting jar.

To build our jar file as wowza extention we need to have compile time dependency on Wowza libs.

Our test template depends on wms-server.jar and wms-stream-publish.jar. So we copy these libraries to project' lib folder from wowza/lib folder and add them to dependency section.

    <dependencies>
        <dependency>
            <groupId>com.wms</groupId>
            <artifactId>wms-server</artifactId>
            <version>${wms.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.wms</groupId>
            <artifactId>wms-stream-publish</artifactId>
            <version>${wms.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>1.6</version>
        </dependency>
    </dependencies>

As you can see I added joda runtime library dependency to the project. I don't use joda in code but just added this runtime dependency to show how dependency copy works with maven. You can see joda library in wowza\lib\dep-libs after mvn package


Since neither wms-server.jar nor wms-stream-publish.jar are Maven repository libraries we need to introduce them to Maven. Take a look at maven-install-plugin in pom.xml below. Before packing solution you should call mvn validate each time you add new dependency you need to install. During validate phase maven-install-plugin plugin adds all libraries it's configured with into local Maven repository.

To copy "runtime" library dependencies I use maven-dependency-plugin. It copies all runtime dependencies to target/deps-lib subfolder.

Before launching Wowza you need to copy resulting jar with all dependencied to wowza/lib directory.
I use maven-antrun-plugin for this purposes. When you call mvn package system builds jar and copies jar and it's dependencies to wowza/lib.

The last major case I missed to discuss is debugging. I checked how debugging works for Wowza IDE. It just calls JVM with following parameter(Wowza 2, 3.x)
-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:3387,suspend=y,server=n -Xmx768M "-Dcom.wowza.wms.AppHome=C:/Program Files/Wowza Media Systems/Wowza Media Server 2.2.4" "-Dcom.wowza.wms.ConfigHome=C:/Program Files/Wowza Media Systems/Wowza Media Server 2.2.4" -Dcom.sun.management.jmxremote=true -Dfile.encoding=Cp1251 -classpath "C:\Program Files\Wowza Media Systems\Wowza Media Server 2.2.4\bin\wms-bootstrap.jar" com.wowza.wms.bootstrap.Bootstrap start

Or for new Wowza Engine(aka Wowza 4.0)
-agentlib:jdwp=transport=dt_socket,address=127.0.0. 1:3387,suspend=y,server=n -Xmx768M -Dcom.wowza.wms.AppHome=/usr/local/WowzaStreamingEngine -Dcom.wowza.wms.ConfigHome=/usr/local/WowzaStreamingEngine -Dcom.sun.management.jmxremote=true -Dcom.wowza.wms.native.base="linux" -classpath "/usr/local/WowzaStreamingEngine/bin/wms-bootstrap.jar" com.wowza.wms.bootstrap.Bootstrap start
 
So I just get parameters IDE uses and configured exec:java goal to use JVM parameters above. Open project using any IDE with Maven support and configure Maven goal exec:java and find where you can pass JVM parameters. Pass parameters above and use Debug mode to execute goal since Run mode will not work. If you need Run mode working you need to call Wowza IDE in Run mode and get parameters it uses to call java and then add new exec:java goal with params for Run. I just use Debug during development cycle and don't use Run.

Please note that my approach to Wowza is not yours and you most probably need to fix JVM params. In addition I use Windows and if this is not your case you should change all paths in JVM params appropriately.

Our Wowza Maven template is hosted on GitHub, you can download it there and try. I added Server listener from the following article http://www.wowza.com/forums/content.php?162-Server-side-publishing-using-the-Stream-class so follow installation instruction, such as config change, before you can start Wowza.


The approach described above is just little a example of our WMSPanel agent build system. We have comprehensive installer what fixes Wowza configs during installation, installs resulting Wowza library and its dependencies when client runs it on a production Wowza server. We provide consulting services for existing and new Wowza projects. So if you want to have comprehensive installer for Wowza, run unit test during package your project or use any IDE with Maven support, we can help you.

You may also check WMSPanel, a centralized Wowza reports and statistics web-based solution. It uses Wowza agent for gathering core streaming data and present it via a web server. Check out the feature list and try it free of charge.

Take a look also at Nimble Streamer, the light-weight HTTP streaming server for HLS, Smooth and progressive download streaming and re-streaming.

September 28, 2011

Wowza integration is almost done

During integration with Wowza server the most important problem was to
  1. Implement cross-platform installer.
  2. Implement ability to work with Maven - because of its great dependency resolution, build, test and deployment capabilities.
  3. Get working approach to have all connected clients information for all Wowza applications without updating Wowza configs manually.
All of above is done and we will launch Wowza support in wmspanel.com soon. Please take a look at out feature list and contact us if you want to use this server as SaaS or install it on your environment.

Update. We've launched the WMSPanel for Wowza.

July 29, 2011

Proudly present TotalStream as our largest customer

Greetings!

We are proud to announce that we've completed a new customer installation. TotalStream, Inc., a large CDN provider that specializes in highly scalable video delivery solutions, is now using WMSPanel to track Windows Media Services video streaming for their clients.

They've made a big contribution in WMSPanel functionality by proposing and trying new features that are either currently implemented or planned for nearest releases from our roadmap.

That is an example of on-site installation of our solution that is available on demand.

Sing up to become one of our next customers and get 2 weeks of service free of charge using our web service.

July 18, 2011

WMSPanel features for Windows Media can do for you

Greetings!

You've probably seen our WMSPanel website already and read about its basic features. If not - well, it's not a problem.
This post is about WMSPanel capabilities in a nutshell.

WMSPanel is about getting data about your media streams and controlling them in a suitable way.

First, it's a web-based tool. No desktop installation, just your favorite browser. And some server background.

Each customer signed up in the system has a separate work space which is accessible by login and password under TLS(SSL) connection. The customer can create a number of users to access company's data . Additionally customer can create company admin how can perform administrative tasks like creating users, starting and stopping Windows Media Service on particulair server etc. Company's users can see statistics and reports and cannot control infrastructure.

See details and screenshots below.

June 14, 2011

Introducing WMSPanel - stats and protection service for WMS

Are you streaming media content via Windows Media Services? Streaming video? Broadcasting via TV set top boxes? Maybe running your own online radio? WMS does a good job for that, but there are some things you need to get your business more profitable.


You just have to get some statistics for your users’ streaming process. That’s because you need to know who you work with.
You also need to protect your proprietary content against some re-streamers and prevent the content theft.

We provide WMSPanel, the tool and the service for both tasks.

  

 

WMSPanel:
  • Gets the statistics from your servers and publish points.
  • Shows real-time graphics for connections and streams.
  • Lists current streaming content with client IP and port data for each publish point.
  • Shows suspicious IPs that are probably re-streaming your content.
And with our WMSAuth plugin being embedded in your system, WMSPanel can enable your content protection - so no thieves will ever get your content for free! Read more on WMSAuth plugin web site.


Sounds good for you?
We can make on-site installation and you can monitor your servers using your own infrastructure.
Or you can use our servers to process and to monitor your data. You just rent our solution for any period of time. Try the first 2 weeks for FREE.

Contact us so we could guide you though the installation process. See the next post - "Installation" - to get started.

May 3, 2011

Hide your links to prevent automatic URL discovering

As was previously promissed I'll show a technique how you can hide your media links in your pages. As was previously discussed if you just provide client a code like this:

<object id        = "MediaPlayer"
                        width        = "320"
                        height        = "250"
                        classid        = "CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
                        codebase    = "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"
                        standby        = "Loading Microsoft Windows Media Player components..."
                        type        = "application/x-oleobject">
                   
                        <param name="FileName" value="rtsp://myserver/mypublishpoint"></object>
a thief can parse your page and get this link. But you can set FileName attribute in javascript and this will prevent automatical parsing of your script. For example

<html>
<head>
<title>Embedding Windows Media Player</title>
<script type="text/javascript">
          
window.onload= function() {

   if(document.getElementById) {
    if(document.MediaPlayer){
        document.MediaPlayer.setAttribute('FileName', 'rtsp://myserver/mypublishpoint')
    }
   }
}
</script>
</head>
<body>
<object id        = "MediaPlayer"
                        width        = "320"
                        height        = "250"
                        classid        = "CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
                        codebase    = "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"
                        standby        = "Loading Microsoft Windows Media Player components..."
                        type        = "application/x-oleobject">
                   
                        <param name="FileName"></object>
</body>
</html>

Then you should apply additional mix on 'rtsp://myserver/mypublishpoint' string and finally you will get something like that:

window.onload= function() {
   if(document.getElementById) {
    var filename= new Array('m','y','p','u','b','l','i','s','h','p','o','i','n','t')
    if(document.MediaPlayer){
        document.MediaPlayer.setAttribute('FileName', 'rtsp://myserver/' + filename.join("") )
    }
   }
}

In addition you can rotate the array, mix it, encode/decode, return several different scripts randomly. After adding new publish point a thief has to open your page and get new links manually. Each time all the time. And since you don't have RSS his job becomes boring and very hard.

Next time we will start series of articles about a new system we are working on. As previously described it will be more complex solution what will help you with WMS server administration not only from security perspective. Stay tuned and subscribe our blog.

Take a look at WMSAuth plugin for Windows MediaPaywall framework for Wowza Media Server and hot-linking protection for Nimble Streamer.


Related documentation


Paywall for WowzaGeo and IP range restriction for WowzaWowza hotlinking re-publishing and re-streaming protectionNimble Streamer HTTP hotlinking protectionNimble Streamer geo-location restrictionPay-per-view for Wowza Media ServerWMSPanel control and reporting panel for Wowza Media Server

April 30, 2011

How your content is restreamed

This article is intended for technical staff and managers who know how Windows Media Server works internally. I hope everybody else find it useful as well.
Lets propose we are bad guys who want to steal somebody's contents. What should we do?
First of all we will try to find somebody who is not protected from link republishing. But thanks to our previous article  there are no people who are not protected from republishing. If we are cheap thieves we will try to steal something else but not media contents from Windows Media Server. If we have enough resources we will try to restream contents.

What is restreaming from technical point of view?
1) we need to get media stream. Even if you are protected from link republishing we can open stream as an authorized user.
2) we need to save stream somewhere. Depending on our needs we probably need big some storage to save stolen content.
3) we need to stream stolen content to our customers.

Lets see how we can get media contents. First of all there are three protocols that Windows Media Server supports: MMS, HTTP, RTSP. MMS is supported only by Windows Media Server 2003 and his younger brother - 2008 Server - doesn't support it. So let's cover just HTTP and RTSP protocols.

HTTP

HTTP was not originally designed for media streaming but using binary chunking (no transport encoding applied to media stream so less data transferred through network) it's good enough for media streaming. It's widely used when media player is embedded into web pages. There is "Referrer" HTTP header related protection from republishing for HTTP protocol. When I tried to hack this protection it was not so easy to me. Additionally this protection works only for HTTP protocol. So use our solution since it's more secure and works for both HTTP, RTSP and even for MMS on Windows Media Server 2003.
We can re-stream HTTP stream produced by Windows Media Server using:

  1. Windows Media Server itself. Yes, the server can re-stream contents. In general this function is used for load balancing in Windows Media Server field.
  2. VLC player. This tool has command-line interface and can restream variary formats. It's opensource and if something is missing (for example you cannot add HTTP Referrer header in VLC but you can download code and add this possibility. You can change "User-Agent" as well. So patched VLC player can pretend regular Windows Media Player or even Windows Media Player embedded into Web page.

RTSP

It's supported both by 2003 and 2008 server versions and it's preferable transport protocol for 2008 server since MMS is not supported here. RTSP was initially created for media streaming and supported by many media servers and players. To re-stream WMV+WMA(ASF) produced by Windows Media Server it's not enough to support RTSP so there is software we can use to steal contents produced by Windows Media Server:

  1. As in previous case Windows Media Server itself. Actually we can protect ourself from re-streaming by Windows Media Server using our solution. You can specify supported players and it will skip others. In order to workaround this simple protection, re-streamer need to either have RTSP proxy with possibility to change "User-Agent" name. I've never heard about such proxy and even if it exists it's not such robust like HTTP proxies exists many years and works fine and very stable. So it looks like while you use RTSP + our solution, re-streamer has to move from Windows Media Server to something else. But of course he can put something first and then stream to Windows Media Server for further re-streaming. So as I said in previous article there is no simple solution for re-stream prevention.
  2. And as for HTTP, we can use VLC as well. Taking into account that we can get source and change everything we need to looks like for example Windows Media player this tool is great for re-streamers and very widely used. It's opensource and anybody can capture traffic between Media Player and try to fix re-streaming software to behave similarly.

There are a lot of commercial and free software available in Internet for re-streamers. I don't want to advertise this soft here but want to say that re-streaming in general is very complex task. It's not so easy since web pages are changing all the time, media URLs changing as well so there is no fully-automated solution where we can say "ok, here is a good site and we want to steal all of its content". All re-streamers have their own solution for stealing contents depending on what they are trying to steal. They may share their scripts of course but when the re-streamer have stolen your content, he has the same problem as you - he needs to protect his investments. It's not too rare case when contents is restolen. Yeah, it's a crazy world.

We've covered just re-streaming part but didn't say anything about how re-streamer can get valid URL to your media contents. Usually you just returns URL to content inside the web page. If that's the case, it's a bad idea since re-streamer can easily parse this page and get your link. In the next article I'll try to help you protect your media URLs from automatic grabbing.

Take a look at WMSAuth plugin for Windows MediaPaywall framework for Wowza Media Server and hot-linking protection for Nimble Streamer.


Related documentation


Paywall for WowzaGeo and IP range restriction for WowzaWowza hotlinking re-publishing and re-streaming protectionNimble Streamer HTTP hotlinking protectionNimble Streamer geo-location restriction Pay-per-view for Wowza Media ServerWMSPanel control and reporting panel for Wowza Media Server

April 18, 2011

How to know who is restreaming your content

In the previous article we described how to prevent unauthenticated usage of your computational resources. Here we'll try to define the next imminence - your users can capture and restream your content. In the next article in our technical blog we'll try to cover common approach used by re-streamers but meanwhile let's assume (and this is a truth) that re-streamer's software pretends to be a regular player (Windows Media Player, Set Top Box player etc).

    How can we determine that somebody is a re-streamer if he is an authenticated user and his software looks like regulair players? There's no simple answer here. But there are some observations about restreamers what we can use to distinguish:

  1. re-streamer typically watches many channels at the same time;
  2. re-streamer watches almost 24 hours a day everyday;
  3. if you're almost sure that you've find re-streamer try to disconnect him from his channels. His software will try to connect immediately. Human cannot do this for example in early morning and most probably this is re-streamer' software that tries to reconnect your channels as soon as it's possible to proceed with stealing your content.

These markers above are very weak in particular but together they can help us to find a violator.
So what should we do from technical point of view? We need to collect all statistics about players and analyze it. We need to get information from all servers in your WMS farm but not from individual servers since only common report from all servers can show actual picture. These statistics are very important not only for re-streaming prevention. Knowing what user watches we can process him in a special way, e.g adding appropriate adds, showing updates about new available materials he probably wants to view. As you can see re-stream prevention is much more complicated than link republishing defense - but it's not impossible though.

Currently we are in active development and testing of such analysis system and if you want to get more details about it - let us know. Once we finish we'll provide an appropriate review of this system and let you try it.

The next article in our technical blog will try to cover common approach used by re-streamers: their tools, methods etc. You need to understand what you're defending yourself from to apply appropriate methods. If you want to setup your streaming environment securely - we can help you here.

Take a look at WMSAuth plugin for Windows MediaPaywall framework for Wowza Media Server and hot-linking protection for Nimble Streamer.


Related documentation



Paywall for WowzaGeo and IP range restriction for WowzaWowza hotlinking re-publishing and re-streaming protectionNimble Streamer HTTP hotlinking protectionNimble Streamer geo-location restriction Pay-per-view for Wowza Media Server, WMSPanel control and reporting panel for Wowza Media Server

April 17, 2011

Why you need media stream protection

Why you need protection of video/audio content?

Media streaming is a business. Like any business you invest some amount of money and expect to get more money back. Those investments are:

  1. You pay for computational resourses. Currently it's most probably just virtual servers field
    or more complex solution like nScaled provides. You can use even you own hardware. No matter what
    you use - cloud or hardware - you always pay for your infrastructure

  2. There are many software solutions for media streaming. But most professionals can say that Windows Media Server

    is the best in case of high quality streaming. You need to pay for this great software and this is you investments as well.

  3. To stream something you need to pay again. People are working hard to produce high quality media content so to show something interesting you need to buy it first.

Let's imagine that there are many people who want to skip 1, 2 and 3. Yes they want their user see your content from your servers and pay them (not you). I think being media streamer you know all of this but let me finish for somebody how don't know what I'm talking about.
When you create publish point and add it to web-page you provide a link to publish point. Now user can get it, setup stream server
and capture your content. Another more common practice is to put your links to another server and provide users with links to your server.
In this case user will pay you money for one account and provide link to many people how will pay to that re-streamer. How can you avoid this?

When webmaster wants to protect unauthorized access to a site he adds autherntication by login/password pair.
User who wants to add comments or change something valued need to sign in and then perform such operations.
So how can you protect media content?
Well, you can use standard Windows Media plugins to protect publish points:
  • Access users with specific IP addresses.
  •  Using NTFS file permissions
  •  Using Windows User permissions.
Well. If you are not commertial streamer you most probably can use these three methods. If you are commertial streamer especially IPTV provider these methods are not applicable.

But you can use our or similar solution based on adding to media URL something that media server can check and either authorize user or deny request. What should we add to get to know that request was made by our user ?
Well, most probably it should be a hash where we add:
  1. user IP address
  2. server time and link validity interval to know that URL was signed in near past. This is necessary to prevent easy restreaming. If sombody wants to restream our content when server time is in URL he need to create script that login as valid user and get new links to video content.
  3. all previous user knows and can create valid link himself. So we just add secret key. This is any string what is unknown by anybody but you.
If your initial URL looked like this
mms://videoserver.net/PublishingPoint/movie.wmv
you will get something like that
mms://videoserver.net/PublishingPoint/movie.wmv?server_time=9/30/2010 10:52:01 AM&hash_value=K8TDaZxCfueiHp0GzVSAsA==&validminutes=5
From what you are protected now? You are protected from the case when a thief adds your links to his site and his users are using your resources.
Not bad, right? But some of your users can capture and re-stream your content in anyway. Take a look at investments list - we've protected the first investment - computational resources. Now nobody can just republish your links and make money on that.
They need to capture your content, store it and re-stream to his users. This is much more complicated. Most probably thief will find somebody who doesn't protect his links and leave you alone. Our solution protects your computational resources from unauthorized access. There are a lot of customers who use it and it works good. It cannot protect you from re-streaming your content.

How to protect your investment number three - the content you pay for? It's not as easy as the method described above. It's necessary to understand this - and if you need to protect your investments deeply we will describe how to do this soon in the next article.

Take a look at WMSAuth plugin for Windows Media, Paywall framework for Wowza Media Server and hot-linking protection for Nimble Streamer.

Contact us if you want solution to protect you from re-streamers.


Related documentation


Paywall framework for WowzaRestriction solution for geo and IP range for WowzaWowza hotlinking re-publishing and re-streaming protectionPay-per-view for Wowza Media ServerWMSPanel control and reporting panel for Wowza Media Server 

April 16, 2011

Welcome to WMSAuth team articles

    First of all we want to say thank you for using our product. This is very important for us that many people from many different countries are using it. We are trying to cover basic needs of video/audio content protection and make our product accessible for small business and individuals for free since we understand that making first steps in audio/video streaming, it's very important to find free, easy and robust solution to start working with. Medium and large business on the other hand can reduce or eliminate cost of video/audio stream protection since we don't offer licenses or something like that. Don't be afraid to start working with this solution, it's open source. If you are not satisfied with current features and need to add something special you can contact us.
     We provide support if it's necessary. For example you've read how-it-works but cannot understand or don't believe it's applicable to you. Or you want to just support us since we made valued feature you are satisfied. Or you need to our assistance at any development/deployment stages, web-site tuning for solution usage etc. Need to add something to the product or another feature to WMS server. We are very good here. This is an area where we make money. Don't hesitate to contact us. If you need something simple it will cost appropriately.Your support is very important to us. Support is not just a money. If you are activity related to media streaming and you want to improve something, don't wait and let us know.
     Currently we are under active development of new feature we'll describe soon. We are looking for new features to implement and you, the media streamers, can help us make valued feature for you.

    So, subscribe to our blog and be up to date with us. We will describe new features under development, our plans etc.