Azure Media Service Fairplay V3 DRM Content Key Policy - azure

I'm trying to encrypt my live streaming content using DRM encryption by following instruction from https://learn.microsoft.com/en-us/azure/media-services/previous/media-services-protect-hls-with-fairplay.
This is my DRM policies and the streaming locator:
I'm able to get the MANIFEST file from the HLS URL. I found that should have another line (known as License URL?) something similar to the following, but it's not appearing inside my downloaded MANIFEST file:
#EXT-X-SESSION-KEY:METHOD=SAMPLE-AES,KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1",URI="skd://willzhanmswest.keydelivery.westus.media.azure.net/FairPlay/?kid=90e91c74-feb1-41ed-920a-3330a62279ca"
Is it something wrong when I configured the DRM? For the FAIRPLAY I uploaded .pfx file, password is in STRING format and the ASK is as given by APPLE. Is this correct or is there anything I've missed?

This is by design. The URI="skd://willzhanmswest.keydelivery.westus.media.azure.net/FairPlay/?kid=90e91c74-feb1-41ed-920a-3330a62279ca" is indeed the FairPlay license acquisition URL. sdk is per Apple's FPS spec.
If player SDK does not require explicit license URL, it knows to replace skd by https.
If player SDK requires explicit license URL, your code needs to replace skd by https.
Quick note: you are using OpenRestriction for 3 DRMs. I assume this is just for test and do not intend to do the same with production?

Related

Proxy a widevine license server using NodeJS

I'm trying to proxy a Widevine license server using my API, I have made a easy to edit example which is basically a Shaka-player and an API which (should) proxy the license server.
I have this license server which for this example is a sample from shaka-player :
https://cwip-shaka-proxy.appspot.com/no_auth
My API should then do a POST request on the above license server and returns the response to shaka-player to be able to play the video, basically it should acts as a proxy endpoint.
Unfortunately, I get this : INVALID_LICENSE_CHALLENGE, notice that changing the DRM license server from player.configure() of course make it works
I may be wrong but I think that the challenge should be the buffer of the request body converted to base64 that's why I tried to do :
const data = Buffer.from(JSON.stringify(req.body)).toString('base64');
You can find source code here to make it easier to understand
Thanks!
NB: I know there is an exact same topic on that but it didn't get any answer so far.

Have CORS requirements changed for CAF receivers?

I am migrating from a receiver v2 to a CAF receiver (aka v3)
My understanding is that CORS headers are not required when streaming a media hosted on a different host than the receiver's if:
the media is file-based (e.g. mp4)
AND no text tracks (captions) are present with the media.
With v2, this worked as described: all my file-based media (e.g. mp4) stream just fine without the CORS headers. CORS headers are indeed needed with captioned videos or HLS
With CAF (v3) however, the receiver is complaining about missing CORS headers even with plain (no captions) mp4 video files.
Is this a bug in v3 or did I miss something from the docs?
Here is a gist containing a simple receiver that should make it easy to reproduce the issue.
Addendum: I believe this is likely a bug, linking to the issue I created
With the CAF receiver, a crossorigin attribute needs to be added to the cast-media-player tag to restore the old behavior
<cast-media-player crossorigin=""></cast-media-player>

How do I stream an uploaded video on Azure Media Services

I uploaded a video to Azure Media Services, and clicked the "publish" button. That gave me a publish URL.
I then used the Azure Media Player (http://amp.azure.net/libs/amp/latest/docs/samples.html) to embed my video content on a page.
The problem I'm having is that the video is choppy to start. Perhaps it's the encoding of the video, but I want to make sure, if I want to stream a video, using the media player or anything else, do I just use the "Publish URL"? OR is there a different way of requesting video content to "smooth stream"?
Yes. You use the publish URL for VOD and you have a few url parameters to change the type of streaming if needed. Default is smooth streaming.
Smooth Streaming
{streaming endpoint name-media services account name}.streaming.mediaservices.windows.net/{locator ID}/{filename}.ism/Manifest
HLS Streaming
{streaming endpoint name-media services account name}.streaming.mediaservices.windows.net/{locator ID}/{filename}.ism/Manifest(format=m3u8-aapl)
MPEG Dash Streaming
{streaming endpoint name-media services account name}.streaming.mediaservices.windows.net/{locator ID}/{filename}.ism/Manifest(format=mpd-time-csf)
See what works best for you
You can also test on this page and try the advanced settings
http://amsplayer.azurewebsites.net/azuremediaplayer.html
The Azure Media Services test page has changed since the last post. The new URL is:
https://ampdemo.azureedge.net/azuremediaplayer.html

streaming video by origin URL with azure media services

I'm trying to make an app with Smooth Streaming. So I'm doing my app with examples
like these.
In result I have many URLs. Some of them is URL for files that I encoded, they are like:
<mediaservicename>.blob.core.windows.net/asset-d66c43e8-a142-4618-8539-39a2bbb14300/BigBuckBunny_650.mp4?sv=2012-02-12&se=2013-06-23T15%3A21%3A16Z&sr=c&si=aff41a1d-6c8a-4387-8c2f-84272a776ff2&sig=8OPuwW6Kssn2EVQYwqUXkUocc7Qhf0xM62rS9aSPsMk%3D
And one of URL is like:
<mediaservicename>.origin.mediaservices.windows.net/6eca30d3-badd-4f45-bc29-264303ffe84a/BigBuckBunny_3400.ism/Manifest
When I try playing the first one on WindowsAzure portal - that's ok.
But when I'm trying to play the second one on WindowsAzure portal - there is an error "we are unable to connect to the content you've requested. We apologize for the inconvenience".
When I'm trying to play them both in my app with Silverlight they do not play as well as on smf.cloudapp.net / healthmonitor.
Maybe there are some errors in the examples on Windiws Azure site? Or what can it be?
The first url you copied cannot be used in a Smooth Streaming player, but the second one may be, if you have created a valid origin locator with a valid access policy.
Can you copy the code you have used to generate these URLs please ?
Hope this helps
Julien

What is a webcal protocol?

Recently i was trying to export my friends' birthday's list from facebook, where i was provided a url like-
webcal://www.facebook.com/ical/b.php?uid=14422701&key=42c5e45fasd
I wonder, what is this webcal:// protocol? can anyone help me please? I tried googling but didnt reach an easy to understand solution.
Webcal was initiated for use with the Apple iCal application and has become a common de facto standard for accessing iCalendar formatted files via WebDAV.[citation needed] It is not an official URI scheme, such as http: and ftp:, as registered with IANA. The Webcal protocol prefix is used to trigger an external protocol handler which is passed the URL of the .ics file rather than being passed the downloaded contents of the file, in much the same way feed: is sometimes used to trigger external RSS readers. The idea is that with this protocol prefix the target file should be subscribed to rather than imported into the calendar application as would happen with a simple download.
from http://en.wikipedia.org/wiki/Webcal

Resources