Azure Media Services - creating a small video player - azure

If I was to use Azure Media Services to consume encoding of small video files and then playing back on a web app and mobile app, do i need to turn on the 'Streaming Endpoint' option? I am getting charged ~$65 a month just to have streaming endpoint, not sure if i need it.
The pricing doesn't quite make sense because I can get the same basic features from Vimeo for $7 a month.
Am I consuming this correctly?

If I was to use Azure Media Services to consume encoding of small video files and then playing back on a web app and mobile app, do i need to turn on the 'Streaming Endpoint' option?
Yes, the official documentation explains that a streaming endpoint is the service that delivers content directly to the client application for live-streaming, video on demand, or progressive download.
So this means that you would need at least one streaming endpoint to be able to serve your videos to a client. A Media Services account already includes a default standard streaming endpoint. According to the documentation, this default streaming endpoint would be enough for the vast majority of workloads.
Take a look at the pricing page for more info: https://azure.microsoft.com/en-us/pricing/details/media-services/
According to the pricing page, the default streaming endpoint does cost ~$65/mo.
In regards to your comparison with Vimeo, the service that you end up using really depends on your particular case. While I understand pricing is a big factor when building an application, you should still consider the security of your videos at rest and in transit, scalability, availability of services, support, etc.

Related

What is the best way of hosting a video on Azure?

To clarify: I have a website hosted in Azure. I want to add a 1.5 minute howto video. I can't imagine it will get shown more than a few tens or hundreds a month (maybe a few thousand if the site takes off).
I was planning on using Azure Media Player to play the video.
In relation to this I thought the video would sit in a streaming endpoint.
But this seems an expensive way of doing this. Are there better ways (especially cheaper)?
EDIT: is it possible to host the video elsewhere and have it embedded in Azure?
The cheap way to do this would be to place the video in a blob storage then play it using a web page.
There is a video explaining how to do this here: https://www.youtube.com/watch?v=qmzns7PgP0A
I would recommended to use Media Service: video-on-demand, content delivery service with an Azure Media Services application in the Azure portal.
Azure Media Services lets you deliver any media, on virtually any device, to anywhere in the world using the cloud. The collection of services provide encoding, live or on-demand streaming, content protection and indexing for video and audio content.
The Windows Azure Media Services platform has four types of services: content uploading, encoding, encrypting content and streaming.
Media Service Pricing: https://azure.microsoft.com/en-in/pricing/details/media-services/
Additional information : Streaming Videos from Azure ( Blob or Media Services)

Azure Media Analytics vs Cognitive Services Video API

Azure is coming is with new Video Analytics API under the Azure Media Analytics(AMA) bracket, and looks promising. In the meantime, Azure Cognitive Services has also come up with Video API which can do some of the analytics jobs which already exist in AMA.
Why is Microsoft following these two different tracks to come up with analytics solution, rather than having one team look at it completely ?
Cognitive Services was designed to be a lightweight series of API's enabling cognitive capabilities for application developers. This suite comprised different forms of AI such as speech and image analysis, in addition to Video.
In the case of the Video APIs, these are actually hosted as Media Processors on the Azure Media Services (AMS) platform at the core.
In addition to what Adarsh has stated above, the other area to watch out for is compliance requirements. There are different terms of use for Cognitive Services like Video Indexer vs. Azure Media Services. At this time, if you need a fully compliant service with the Azure Terms of services, then you should look at Azure Media Services/Analytics. If you are ok with the Cognitive Services terms of service and lack of full compliance that Azure has, then you can look at videoindexer.ai.
Over time, we will be bringing more compliance to the Video Indexer platform as well, but since that is a newer set of features it will take some time.
I was looking for an answer for almost the same question but in relation to audio transcription only. Found that:
Microsoft has been developing a set of services for speech, face and
emotion recognition for quite some time, previously known as “Project
Oxford”. These services have now been bundled together in a single
pack called as Microsoft Cognitive Services. All of its components are
now made available to Azure Media Services and branded as “Azure Media
Analytics”. It makes video searchable and more accessible to users by
indexing its content.
As I understand Azure Media Services use "Cognitive Services" for analytics.
Update: Apparently, they don't know yet either.

Microsoft Azure cdn vs media streaming services

So, I'm working on an application where admins will be able to upload videos, for others to view on different platforms (mobile devices, computers etc). It is to be hosted on Azure, and I'm having a bit difficulty figuring out if I need to use Media services or simply a CDN.
When does it make sense to use the Media services over simply uploading to a blob and viewing through CDN? What are the advantages of using one over another?
Microsoft Azure CDN pulls content from Azure Media Services streaming server, so you could stream your content from the edge. You don't have to use a CDN if you don't need to deliver content in a large scale at a time. Rather, you could directly streaming content from streaming server offered by Azure Media Services.
The reason you maybe confused is because there are CDN vendors in the market (such as Akamai) offers streaming server capability. But by CDN itself, the edge network was just for caching the bits, not acting like a streaming server.
Cheers,
Mingfei Yan

Azure Media Services or simple Storage Account for video storage for STA

We are developing a "multi tenant application" (MTA) on AZURE. In addition we develop "single tenant applications" (STA) for customers that utilise MTA data via a REST API end point i.e so the STA can be hosted anywhere.
A specific STA uploads and stores video files. Security for these video files is important and 1xVideo 1xConcurrentUser most likely consumption use case. It not clear at this stage the user will consume the content by streaming or download.
QUESTIONS
Using Azure MEDIA SERVICES account/keys its easy to upload , store and download media content. What are the benefits of using MEDIA SERVICES over a standard Azure STORAGE ACCOUNT ? ? I understand MEDIA SERVICES use a STORAGE ACCOUNT.
Does isolating a STA into a new Azure subscription makes sense to isolate video related costs categorically ? the itemised bill contains 6000+ rows. Difficult to extract the relevant data for an STA each month. In theory a STA customer could in future take control of this account management and costs.
Is there a max number of CONTAINERS that can be added to a STORAGE ACCOUNT ?
Should the CONTAINER be of type PRIVATE to secure the content but still allow access for the STA?
Thank you
Scott,
Media Services is good if you're looking to accept incoming video and process it to serve in other formats or to leverage streaming media playback. Serving video directly out of an Azure Blob Storage Account is possible but it will not provide smooth streaming or transcoding (no streaming playback may mean stop / start of video for users with high latency connections).
I would advise against putting each STA into their own subscription. While it will give you a degree of control over the management of charging back usage to the STA user it will be a big overhead to manage. Your best bet would be to use an appropriate storage account / container setup to allow you track calls some other way and provide estimated costs. Don't forget that Azure is always changing and it may be that future features give you the ability to tag and track costs inside a subscription more effectively.
There is no limit on number of containers in a storage account. The limits are 50 storage accounts per subscription and a maximum of 500TB of storage per account. Storage and Subscription Limits are documented here: http://azure.microsoft.com/en-us/documentation/articles/azure-subscription-service-limits/#storagelimits
You can use Shared Access Signatures to control access to Blobs in Azure Blob Storage. See here for how to create and use them: http://msdn.microsoft.com/en-us/library/azure/jj721951.aspx and here for guidance on setting permissions on Blob Storage containers: http://msdn.microsoft.com/en-us/library/azure/ee393343.aspx
HTH
Simon.
I will try to answer the first question:
Using Azure MEDIA SERVICES account/keys its easy to upload , store and download media content. What are the benefits of using MEDIA SERVICES over a standard Azure STORAGE ACCOUNT ? ? I understand MEDIA SERVICES use a STORAGE ACCOUNT.
Answer: Azure Media Services origin server is the IIS media service in the cloud. All video contents are stored in Azure Blob storage and there is a mapping between the media service and storage. There are many advantages of using media server rather than directly downloading from storage: (1) Media server has the intelligent to forward the right data fragment(right bitrate, time stamp) to your client efficiently. (2) our origin server dynamically package multiple bitrate MP4 from storage account into multiple streaming format (HLS, Smooth streaming and MPEGDASH), which get to played on various devices and platform. Hence, you save on the cost for encoding your video into multiple formats. (3) Our origin server supports live streaming.
I think this question goes into why we invent media server. I have a blog explains how video streaming works for your reference: http://mingfeiy.com/adaptive-streaming-video-streaming.

Using Node.js for Azure Media Services/Handling Media Upload and Streaming

I am in the middle of developing services that will deal with media files (audio/video) . These services are responsible for uploading and then streaming media files uploaded by client (IOS, Android but not limited to these devices/platforms).
We are using node.js with mongodb as database. In the near future our services will be part of Azure. (Portions of our backend are already there in Azure)
In that case i came across Azure media services. I know that it does't have any sdk to work with for Node.js so my only option here is to use REST Service from Azure Media Services.
My question are:
1) Whats the correct approach adapted in this scenario by developers already handling this scenario. I am open for approaches/practices here and change what i am planning to do currently.
2)If i use Azure Media Services. How would my client calls my services (node.js) which acts as a proxy for calling REST Services for Azure Media Services. How will this exactly work and i have file in hand in my proxy to re-upload. Or i will internally direct my services so that internally it uploads to Media Services .
3)How these media files uploaded in media services are related to a record in MongoDB. Like a record can have multiple media files.
I appreciate any pointers/explanations here.
Thanks,
To proper answer your question there are few questions need to be answered.
1.What functionality are you going to provide on top of azure media services. From your question it seems that main goal to let users to upload asset and them to have ability to stream uploaded content.
For this purpose you need to have following steps to be implemented in node js.
Create asset and asset files records in Azure Media Service(WAMS) by calling REST API. http://msdn.microsoft.com/en-us/library/windowsazure/hh973617.aspx
Create access policy and locator which will give URI of blob storage where file needs to be uploaded. WAMS REST API
Upload file using node.js to blob storage http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/blob-storage/
Create encoding job which will encode you input into multi bitrate mp4. WAMS REST API
Package your multi bitrate mp4 to smooth or HLS format or utilize dinamic packaging feature in WAMs. http://channel9.msdn.com/Series/Windows-Azure-Media-Services-Tutorials/Introduction-to-dynamic-packaging
Once you ready to stream your content you need to give user client playback url pointing to origin server. In order to do this you have to call WAMS REST API and create origin locator
Assets are exposing ID and AlternativeID properties which you can use to map your metadata about content with WAMS assets and implement any additional Content Management logic.
You need to act as proxy if you have some user based authentication and don't want to have dedicate separate azure media account to one user. WAMS provides basic blocks for asset ingest, encode, package, ondemand delivery and in nearest future for live streaming.
It can be used as foundation for your cms system or you can act SSAS provider by adding additional authentication, authorization layer. Currently you can use third party offerings http://www.ezdrm.com/ for playback DRM protection or your own license server http://msdn.microsoft.com/en-us/library/windowsazure/dn223278.aspx.
I have a small solution but I think it will require some work from you, maybe you wont like it that much, how about working with Windows Azure Mobile services. it support adding NPM now, the reason that I am telling you to use the Windows Azure Mobile services is that it will help you connect to your clients whatever was the application platform used.
http://weblogs.asp.net/scottgu/archive/2013/06/14/windows-azure-major-updates-for-mobile-backend-development.aspx
to integrate between the .Net and Node Js you can start by using Edge JS or signalR I think.
http://www.infoq.com/articles/the_edge_of_net_and_node
http://www.asp.net/signalr
I just want to suggest an idea that might be helpful to work around the lack of support of Media services in Node Js is that you use Blob storage for streaming. after all the Media Services is based on the Blob storage I think. here is a link that will guide you with the usage of the blob storage.
http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/blob-storage/
here is also a question posted before about how to stream from blob storage using Node JS I hope you find it beneficial.
How to stream a Windows Azure Blob to the client using Node.js?
Getting contents of a streaming Blob to be sent to a Node.js Server
here is also another link that will help you to do so "Geo-Protection for Video Blobs Using a Node.js Media Proxy"
http://msdn.microsoft.com/en-us/magazine/dn198240.aspx
Just wanted to make sure that you got the Windows Azure Node Js SDK, you might find some solutions that can help you with the development of you application.
https://github.com/WindowsAzure/azure-sdk-for-node
I hope my answer helps you let me know if you need anything else.
I have more recent Typescript based samples now for AMS v3 API using our latest javascript Node.js SDK here
https://github.com/Azure-Samples/media-services-v3-node-tutorials

Resources