Protecting HLS streams using Playready - smooth-streaming-player

I am trying Playready protect HLS streams using transform manager.
It seems that the output can only be played using URL "t_200-m3u8-aapl.ism/manifest(format=m3u8-aapl)"
I believe a standard HTTP server wont be able to stream it as it wont be able to interpret /manifest call. What kind of server capabalities are required?
Is there any way I can achieve following workflow:
Create HLS stream using apple segmenter -> Playready protect that package (which tool?)

Azure Media Services supports the protection and streaming of HLS with PlayReady.
To achieve the workflow, you have to first encode a video to Smooth Streaming format, and then run it through the Encryptor task here with your PlayReady settings.
Once you have an encrypted Smooth Streaming Asset, you can then create a second HLS PlayReady protected asset by passing the file through the Packager task here.
The resulting HLS Asset will be encrypted with PlayReady, and the .m3u8 will contain the proprietary PlayReady tags for use by a player framework that is capable of getting a license and decrypting the content. There are several third party DRM companies that provide such player frameworks. Microsoft does not provide a PlayReady player SDK for iOS at this time, so you have to go to a third party DRM company.

IIS Transform Manager creates HLS presentations that are designed to be played using IIS Media Services or Windows Azure Media Services. You are correct that basic HTTP servers are not capable of delivering such videos, as some server-side processing is required.
It is possible to protect a stand-alone HLS video using PlayReady, though I am not aware of any freely available tools for this. If you are interested in commercial solutions, I may be able to help you via e-mail (saares#axinom.com).

To just update on this, Azure Media Services just announced first-party PlayReady service as well. You could obtain a PlayReady server in the cloud, and use Media Services either statically encrypted a smooth streaming asset, then package the content into HLS, or even better, you could encode your asset into Multi-bit-rates MP4, and we do dynamic encryption with PlayReady, and deliver the stream in HLS, DASH and Smooth Streaming on the fly.
For more information, you could check out my blog at http://azure.microsoft.com/blog/2014/09/10/announcing-public-availability-of-azure-media-services-content-protection-services/.

Related

Which protocol to use for multi-stream application ? RTMP?

I'm trying to stream several iPad screen to a single python client (computer) on a local network but I don't know which protocol to use.
I can do it with 1 Ipad using MonaServer, an app that stream on RTMP and a little Python script to read the video.
But I am dealing with problems to use several Ipads because as I saw RTMP uses a single port on Windows, :1935 and I am not sure it's possible to multi-stream with RTMP.
I am not a pro with networking, so if you have any suggestions I'm open
What you need is to following the wiki and usage of open source projects, to get some instincts about multiple clients live streaming.
For example, you could use OBS to publish some streams to a media server, like SRS, play it by different protocols like RTMP/HTTP-FLV/HLS/WebRTC.
You could publish multiple streams, they are not mutually exclusive. And play by different players, depends on the protocol you chose, please read this post.
Try it.

How to stream video from my server to client browser using DirectShow?

I'm developing an ASP.NET application that's required to stream on-demand videos from server to client. Now I consider using DirectShow to do some kind of processing works before the video is transmitted over Internet. Following this article, I know I can transfer video stream over network through WMAsfWriter after it's processed by DirectShow and the output is a URL that the client can get access to through Windows Media player. But in my ASP.NET application, I want the video stream played on the web page of the client browser such as Chrome. I'm not sure if the output URL can be parsed by client browser and the video stream can be played there directly, so I want to ask that is it possible? If not, what extra steps do I need to take to achieve my goal?
I think you can made WebRTC streamer DirectShow filter and open this stream in browser. Ways like WMP / VLC player require ActiveX, that, really, dead technology now. Even Microsoft Edge do not support it anymore. WebRTC most common way today. Web version of Skype and a lot of other apps use it.

MPEG-DASH Encoding for Live Streaming

I want to do encode a live stream for MPEG-DASH in various bitrates and resolutions for live playback.
Everything I found so far either uses only the source resolution (Nimble, nginx-rtmp-module) or seems to be only for VOD streaming(DASHEncoder).
Is it possible to use DASHEncoder with a live input (rtmp stream) and how would I do that?
If not, is it possible to use nginx-rtmp + ffmpeg for what I want to do?
There are several different services available which support such use-cases, like NGINX Plus.
I also successfully managed to run a live stream with Bitmovin and to the best of my knowledge livestream.com is also capable of doing that.

video server supporting Http

I want to setup a video on demand server which support Http protocol. It is like Youtube, which hosts a lot of videos, and end users could play them from browser (by using Flash or Html 5).
Two quick questions,
For the big video files, shall I put them on disk or in memory? How Youtube or other big video site did it? Not sure if put all video in memory is too expensive, and put video on disk is too slow?
Is there any open source video hosting server for my purpose? If steaming is supported, it will be great.
thanks in advance,
George
If you just want to have an HTML page that links to your video files - no problem, but most browsers will download the entire file before you system even considers playing it.
If you want to stream the files (like YouTube and others do) then you aren't actually using HTTP for the video itself. HTTP is used to get the information about the stream so your player can stream and play directly without having to download the entire file first.
Streaming video uses RTSP (or some other streaming protocol) for the audio and video data.
The closest HTTP protocol can get to "streaming" video is to use Server-Push of individual image frame with each frame flagged to replace the previous frame. Not all browsers can handle this directly, but might need an ActiveX control or Java Applet. The original QuickTime did this before the streaming protocols were implemented at the servers.
re: how does YouTube deal with big video file
I suspect they are on disk until they are needed. Moved into memory only as needed. Flushed from memory when no longer needed.
re: is there an open source video server for my purpose
YES! Check out http://www.videolan.org/
-Jesse
another approach is to use HTTP Live Streaming - HLS - the web server is simply a standard httpd server - video/audio is preprocessed on server side into a set of bitrate playlists.
The logic is on the client side to retrieve the media as a series of 6 second files, based on bandwidth appropriate playlist.
So :
- use files not memory
- there are open source HLS segmentators (ffmpeg)

On-the-fly video streaming over http?

I'm building an application that will serve up video files to users on a variety of different platforms. As such, I need the ability to set up a server that will serve up video files that might need to be transcoded into a number of different formats. Basically, I want to replicate the functionality that TVersity provides.
The ideal solution would allow me to access the video stream via http, specifiying some sort of transcoding parameters in the call.
Anyone have any good ideas?
Thanks!
Chris
HTTP is not a streaming protocol. Have a look at progressive download - there are lots of PHP implementations / flash players available. ffmpeg is a good tool for converting formats / size / frame rates etc.

Resources