SlideShare a Scribd company logo
1 of 31
Capture
Record
Clip
Embed and play
Search
Video from newbie to ninja
http://creativecommons.org/licenses/by-nc-sa/3.0/
Vito Flavio Lorusso
@vflorusso
http://github.com/vflorusso
Things that kept me busyโ€ฆ
6. CDN
4. Cloud Ingest2. Broadcaster
Toronto Facility
3. Encoding
5. Storage & Streaming
7. Immersive Player
Client
15 live feeds
1. FIFA Broadcast
Facilities
H.264
HLS
DASH
What does
โ€œvideo in the cloudโ€
look like?
INGEST
ENCODE
DELIVER
PACKAGE
ENCRYPT
โ€œThis looks complicatedโ€ฆ
I am just a web developerโ€ฆ
and I want my Youtubeโ€
Creating the Media Services
Account
Create a Storage Account
New-AzureStorageAccount -StorageAccountName [name] -Label
[label] -Location [location] -Type [storage-type]
Create a Media Services Account
New-AzureMediaServicesAccount -Name [ams-name] -
StorageAccountName [stg-name] -Location [location]
Create a Media Services Account
Get-AzureMediaServicesAccount -Name [ams-accountname]|Format-
Table Name, MediaServicesPrimaryAccountKey
Creating the CloudMediaContext
using Microsoft.WindowsAzure.MediaServices;
using Microsoft.WindowsAzure.MediaServices.Client;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
public static CloudMediaContext createAMSContext()
{
MediaServicesCredentials credentials = new
MediaServicesCredentials(amsAccountName, amsAccountKey);
CloudMediaContext mediaClient = new
CloudMediaContext(credentials);
return mediaClient;
}
Creating your with Azure
Youtube
Vimeo
Dailymotion
MP4 Video
Upload and
Create Asset
Media Services
Account
WEB APP
Uploading videosโ€ฆ (1/2)
static public IAsset CreateAssetAndUploadSingleFile(CloudMediaContext amsAccount,
AssetCreationOptions assetCreationOptions, string singleFilePath)
{
var assetName = "UploadSingleFile_" + DateTime.UtcNow.ToString();
var asset = CreateEmptyAsset(amsAccount, assetName, assetCreationOptions);
var fileName = Path.GetFileName(singleFilePath);
var assetFile = asset.AssetFiles.Create(fileName);
Console.WriteLine("Created assetFile {0}", assetFile.Name);
โ€ฆ
Uploading videosโ€ฆ 2/2
var accessPolicy = amsAccount.AccessPolicies.Create(assetName,
TimeSpan.FromDays(3),
AccessPermissions.Write | AccessPermissions.List);
var locator = amsAccount.Locators.CreateLocator(LocatorType.Sas,
asset, accessPolicy);
Console.WriteLine("Upload {0}", assetFile.Name);
assetFile.Upload(singleFilePath);
Console.WriteLine("Done uploading of {0} using Upload()",
assetFile.Name);
locator.Delete();
accessPolicy.Delete();
return asset;
}
โ€ฆ
Creating your with Azure
Youtube
Vimeo
Dailymotion
MP4 Video
Upload and
Create Asset
Media Services
Account
Media Services
Encoding Units
Process
Asset
Subtitles
Thumbnails
manifest
Adaptive bitrate
MP4 video
WEB APP
Processingโ€ฆ Encode
static public IAsset EncodeToAdaptiveBitrateMP4Set(IAsset asset, string
pathToLocalPresetFile)
{
IJob job = _context.Jobs.Create("Media Encoder Standard Job");
IMediaProcessor processor = GetLatestMediaProcessorByName("Media Encoder
Standard");
ITask task = job.Tasks.AddNew("My encoding task",
processor,
"H264 Multiple Bitrate 720p",
TaskOptions.None);
task.InputAssets.Add(asset);
task.OutputAssets.AddNew("Output asset",
AssetCreationOptions.None);
job.StateChanged += new
EventHandler<JobStateChangedEventArgs>(JobStateChanged);
job.Submit();
job.GetExecutionProgressTask(CancellationToken.None).Wait();
return job.OutputMediaAssets[0];
}
Processingโ€ฆ Thumbnails
<?xml version="1.0" encoding="utf-8"?> <Thumbnail Size="100%,*" Type="Jpeg"
Filename="{OriginalFilename}_{Size}_{ThumbnailTime}_{ThumbnailIndex}_{Date}_{Ti
me}.{DefaultExtension}"> <Time Value="10%" Step="10%" Stop="95%"/> </Thumbnail>
string configuration = File.ReadAllText(Path.GetFullPath(configFilePath +
@"Thumbnails.xml"));
ITask task = job.Tasks.AddNew("My thumbnail task", processor, configuration,
TaskOptions.ProtectedConfiguration);
Processingโ€ฆ Subtitles
string configuration = string.IsNullOrEmpty(configurationFile) ? "" :
File.ReadAllText(configurationFile);
ITask task = job.Tasks.AddNew("My Indexing Task",
processor,
configuration,
TaskOptions.None);
<?xml version="1.0" encoding="utf-8"?> <configuration version="2.0"> <input>
<metadata key="title" value="[Title of the media file]" /> <metadata
key="description" value="[Description of the media file]" /> </input>
<settings> </settings> <features> <feature name="ASR"> <settings> <add
key="Language" value="English"/> <add key="CaptionFormats"
value="ttml;sami;webvtt"/> <add key="GenerateAIB" value ="true" /> <add
key="GenerateKeywords" value ="true" /> </settings> </feature> </features>
</configuration>
Creating your with Azure
Youtube
Vimeo
Dailymotion
MP4 Video
Upload and
Create Asset
Media Services
Account
Media Services
Encoding Units
Process
Asset
Subtitles
Thumbnails
manifest
Adaptive bitrate
MP4 video
Media Services
Streaming EndpointsCDN
WEB APP
Creating the Endpoint
public static void createStreamingEndpoint(CloudMediaContext amsAccount,
string seName)
{
IStreamingEndpoint amsEndpoint =
amsAccount.StreamingEndpoints.Create(seName, 1);
amsEndpoint.StartAsync();
}
Get the streaming URL (1/2)
static string streamSmoothLegacy = "(format=fmp4-v20)";
static string streamDash = "(format=mpd-time-csf)";
static string streamHLSv4 = "(format=m3u8-aapl)";
static string streamHLSv3 = "(format=m3u8-aapl-v3)";
static string streamHDS = "(format=f4m-f4f)";
private static string GetStreamingOriginLocatorEndPoint(CloudMediaContext
amsAccount, IAsset assetToStream)
{
var theManifest = from f in assetToStream.AssetFiles
where f.Name.EndsWith(".ism")
select f;
// Cast the reference to a true IAssetFile type.
IAssetFile manifestFile = theManifest.First();
IAccessPolicy policy = null;
ILocator originLocator = null;
// Create a 30-day readonly access policy.
policy = amsAccount.AccessPolicies.Create("Streaming policy",
TimeSpan.FromDays(30),
AccessPermissions.Read);
โ€ฆ
// Create an OnDemandOrigin locator to the asset.
originLocator =
amsAccount.Locators.CreateLocator(LocatorType.OnDemandOrigin, assetToStream,
policy,
DateTime.UtcNow.AddMinutes(-5));
// Create a full URL to the manifest file. Use this for playback
// in streaming media clients.
string urlForClientStreaming = originLocator.Path +
manifestFile.Name + "/manifest";
// Return the locator.
return urlForClientStreaming;
}
Get the streaming URL (2/2)
โ€ฆ
Managing Media Services from
ยซcodeยป
โ€ข Command Line
โ€ข Windows: PowerShell
โ€ข Code
โ€ข Azure Media Services REST APIs
โ€ข Azure Media Services SDK for .NET
โ€ข Azure SDK for Java
โ€ข Azure Media Services for Node.js
โ€ข Azure PHP SDK
Wrapping up: what makes a
Media Service
Media Service Account
Storage Account
AssetAssetAsset
Streaming Endpoint
Streaming Unit
Encoding
Job
Task
Live Streaming
Channel
Program
Creating your with Azure
Youtube
Vimeo
Dailymotion
MP4 Video
Upload and
Create Asset
Media Services
Account
Media Services
Encoding Units
Process
Asset
Subtitles
Thumbnails
manifest
Adaptive bitrate
MP4 video
Media Services
Streaming EndpointsCDN
Azure
Search
WEB APP
<video /> <img /> <input /> <div />
Create Search Account
#only lowercase letters and numbers accepted
$searchdeploymentname = "vitolosearch01"
$dbdeploymentname = "vitotestdb02"
$dbservername = "vitotestdbsrv02"
$dbadminname = "vito"
$dbpassword = Read-Host "Type DB password"
#parameters for creating the search service
$searchparams = @{name=$deploymentname; location=$location; sku= "standard";
replicaCount=1; partitionCount=1}
Switch-AzureMode AzureResourceManager
Add-AzureAccount -Credential $credential
Select-AzureSubscription $subscriptionName
New-AzureResourceGroup โ€“Name $resourcegroupname โ€“Location $location
New-AzureResourceGroupDeployment -ResourceGroupName $resourcegroupname -
nameFromTemplate $searchdeploymentname -DeploymentName $searchdeploymentname -
TemplateFile .Microsoft.Search.1.0.5.json -TemplateParameterObject $searchparams
Create Index
string searchServiceName =
ConfigurationManager.AppSettings["SearchServiceName"];
string apiKey =
ConfigurationManager.AppSettings["SearchServiceApiKey"];
_searchClient = new SearchServiceClient(searchServiceName, new
SearchCredentials(apiKey));
_indexClient = _searchClient.Indexes.GetClient(_moviesIndexName);
_serviceUri = new Uri("https://" +
ConfigurationManager.AppSettings["SearchServiceName"] + ".search.windows.net");
_httpClient = new HttpClient();
_httpClient.DefaultRequestHeaders.Add("api-key", apiKey);
CreateMovieIndex();
CreateMovieIndex()
internal static void CreateIndex(string collectionName)
{
try
{
var definition = new Index()
{
Name = collectionName,
Fields = new[]
{
new Field(โ€œMOVIE_KEY", DataType.String) { IsKey = true,
IsSearchable = false, IsFilterable = false, IsSortable = false, IsFacetable =
false, IsRetrievable = true},
new Field(โ€œMOVIE_DATA", DataType.String) { IsKey = false,
IsSearchable = true, IsFilterable = true, IsSortable = false, IsFacetable =
true, IsRetrievable = true}
}
};
_searchClient.Indexes.Create(definition);
}
catch (Exception ex)
{
Console.WriteLine("Error creating index: {0}rn",
ex.Message.ToString());
}
}
Wrap up: Azure Search
Search Service Client
Collection
Index
Fields
Facets Indexer
Search Query key
Creating your with Azure
Youtube
Vimeo
Dailymotion
MP4 Video
Upload and
Create Asset
Media Services
Account
Media Services
Encoding Units
Process
Asset
Subtitles
Thumbnails
manifest
Adaptive bitrate
MP4 video
Media Services
Streaming EndpointsCDN
Azure
Search
WEB APP
<video /> <img /> <input /> <div />
The web page: Media Player
<link href=โ€œhttp://amp.azure.net/libs/amp/latest/skins/amp-
default/azuremediaplayer.min.css" rel="stylesheet">
<script src=
โ€œhttp://amp.azure.net/libs/amp/[version]/azuremediaplayer.min.js"></script>
<video id="vid1" class="azuremediaplayer amp-default-skin" autoplay
controls width="640" height="400" poster="poster.jpg" data-
setup='{"nativeControlsForTouch": false}'>
<source
src="http://amssamples.streaming.mediaservices.windows.net/91492
735-c523-432b-ba01-
faba6c2206a2/AzureMediaServicesPromo.ism/manifest"
type="application/vnd.ms-sstr+xml" />
<p class="amp-no-js"> To view this video please enable
JavaScript, and consider upgrading to a web browser that
supports HTML5 video </p>
</video>
The web page: Search
<html>
<head>
<script src="azure-search.min.js"></script>
</head>
<body>
<script>
var client = AzureSearch({
url: "https://MY_SEARCH_SERVICE_NAME.search.windows.net",
key:"MY_QUERY_KEY"
});
client.search('myindex', {search:'document'}, function(err, results){
// results is an array of matching documents
});
</script>
</body>
</html>
Questions?
Useful links
Azure Media Services Dev Center
http://azure.microsoft.com/en-us/develop/media-services/
Azure Media Services Explorer
http://aka.ms/amse
Azure Media Player
http://aka.ms/azuremediaplayer
Azure Search
https://azure.microsoft.com/en-
us/documentation/articles/search-workflow/
webnextconf.eu

More Related Content

What's hot

Ajax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesAjax Performance Tuning and Best Practices
Ajax Performance Tuning and Best Practices
Doris Chen
ย 
Security and performance designs for client-server communications
Security and performance designs for client-server communicationsSecurity and performance designs for client-server communications
Security and performance designs for client-server communications
WO Community
ย 
JSLounge - TypeScript ์†Œ๊ฐœ
JSLounge - TypeScript ์†Œ๊ฐœJSLounge - TypeScript ์†Œ๊ฐœ
JSLounge - TypeScript ์†Œ๊ฐœ
Reagan Hwang
ย 
An Overview of Node.js
An Overview of Node.jsAn Overview of Node.js
An Overview of Node.js
Ayush Mishra
ย 
ๆ”ฏๆ’่‹ฑ้›„่ฏ็›Ÿๆˆฐ็ธพ็ถฒ็š„้‚ฃๆขๅทจ่Ÿ’
ๆ”ฏๆ’่‹ฑ้›„่ฏ็›Ÿๆˆฐ็ธพ็ถฒ็š„้‚ฃๆขๅทจ่Ÿ’ๆ”ฏๆ’่‹ฑ้›„่ฏ็›Ÿๆˆฐ็ธพ็ถฒ็š„้‚ฃๆขๅทจ่Ÿ’
ๆ”ฏๆ’่‹ฑ้›„่ฏ็›Ÿๆˆฐ็ธพ็ถฒ็š„้‚ฃๆขๅทจ่Ÿ’
Toki Kanno
ย 

What's hot (20)

Ajax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesAjax Performance Tuning and Best Practices
Ajax Performance Tuning and Best Practices
ย 
Security and performance designs for client-server communications
Security and performance designs for client-server communicationsSecurity and performance designs for client-server communications
Security and performance designs for client-server communications
ย 
Gruntwork Executive Summary
Gruntwork Executive SummaryGruntwork Executive Summary
Gruntwork Executive Summary
ย 
Amazon Web Services for PHP Developers
Amazon Web Services for PHP DevelopersAmazon Web Services for PHP Developers
Amazon Web Services for PHP Developers
ย 
Parse cloud code
Parse cloud codeParse cloud code
Parse cloud code
ย 
JavaFest. Nanne Baars. Web application security for developers
JavaFest. Nanne Baars. Web application security for developersJavaFest. Nanne Baars. Web application security for developers
JavaFest. Nanne Baars. Web application security for developers
ย 
JSLounge - TypeScript ์†Œ๊ฐœ
JSLounge - TypeScript ์†Œ๊ฐœJSLounge - TypeScript ์†Œ๊ฐœ
JSLounge - TypeScript ์†Œ๊ฐœ
ย 
Supercharging WordPress Development - Wordcamp Brighton 2019
Supercharging WordPress Development - Wordcamp Brighton 2019Supercharging WordPress Development - Wordcamp Brighton 2019
Supercharging WordPress Development - Wordcamp Brighton 2019
ย 
OSGi Cloud Ecosystems (EclipseCon 2013)
OSGi Cloud Ecosystems (EclipseCon 2013)OSGi Cloud Ecosystems (EclipseCon 2013)
OSGi Cloud Ecosystems (EclipseCon 2013)
ย 
An Overview of Node.js
An Overview of Node.jsAn Overview of Node.js
An Overview of Node.js
ย 
Immutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS LambdaImmutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS Lambda
ย 
Log in to a Linux VM in Azure using AAD authentication
Log in to a Linux VM in Azure using AAD authenticationLog in to a Linux VM in Azure using AAD authentication
Log in to a Linux VM in Azure using AAD authentication
ย 
Node.js and Parse
Node.js and ParseNode.js and Parse
Node.js and Parse
ย 
Industrializing the creation of machine images and Docker containers for clou...
Industrializing the creation of machine images and Docker containers for clou...Industrializing the creation of machine images and Docker containers for clou...
Industrializing the creation of machine images and Docker containers for clou...
ย 
MuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise security
MuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise securityMuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise security
MuleSoft ESB Payload Encrypt Decrypt using anypoint enterprise security
ย 
HTML5์™€ ๋ชจ๋ฐ”์ผ
HTML5์™€ ๋ชจ๋ฐ”์ผHTML5์™€ ๋ชจ๋ฐ”์ผ
HTML5์™€ ๋ชจ๋ฐ”์ผ
ย 
Apache spark with akka couchbase code by bhawani
Apache spark with akka couchbase code by bhawaniApache spark with akka couchbase code by bhawani
Apache spark with akka couchbase code by bhawani
ย 
ๆ”ฏๆ’่‹ฑ้›„่ฏ็›Ÿๆˆฐ็ธพ็ถฒ็š„้‚ฃๆขๅทจ่Ÿ’
ๆ”ฏๆ’่‹ฑ้›„่ฏ็›Ÿๆˆฐ็ธพ็ถฒ็š„้‚ฃๆขๅทจ่Ÿ’ๆ”ฏๆ’่‹ฑ้›„่ฏ็›Ÿๆˆฐ็ธพ็ถฒ็š„้‚ฃๆขๅทจ่Ÿ’
ๆ”ฏๆ’่‹ฑ้›„่ฏ็›Ÿๆˆฐ็ธพ็ถฒ็š„้‚ฃๆขๅทจ่Ÿ’
ย 
Scale Your Data Tier With Windows Server App Fabric
Scale Your Data Tier With Windows Server App FabricScale Your Data Tier With Windows Server App Fabric
Scale Your Data Tier With Windows Server App Fabric
ย 
A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)
ย 

Similar to Capture, record, clip, embed and play, search: video from newbie to ninja

Playing with php_on_azure
Playing with php_on_azurePlaying with php_on_azure
Playing with php_on_azure
CEDRIC DERUE
ย 
Cloud 101: Hands-on Heroku & AWS
Cloud 101: Hands-on Heroku & AWSCloud 101: Hands-on Heroku & AWS
Cloud 101: Hands-on Heroku & AWS
Amine Sadry
ย 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
Justin Cataldo
ย 

Similar to Capture, record, clip, embed and play, search: video from newbie to ninja (20)

Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
ย 
Playing with php_on_azure
Playing with php_on_azurePlaying with php_on_azure
Playing with php_on_azure
ย 
SCasia 2018 MSFT hands on session for Azure Batch AI
SCasia 2018 MSFT hands on session for Azure Batch AISCasia 2018 MSFT hands on session for Azure Batch AI
SCasia 2018 MSFT hands on session for Azure Batch AI
ย 
C fowler azure-dojo
C fowler azure-dojoC fowler azure-dojo
C fowler azure-dojo
ย 
์˜คํ”ˆ์†Œ์Šค ๊ฒŒ์ž„ ์„œ๋ฒ„ ์—”์ง„ ์Šคํ„ฐ๋”” ์บ ํ”„ - CloudBread
์˜คํ”ˆ์†Œ์Šค ๊ฒŒ์ž„ ์„œ๋ฒ„ ์—”์ง„ ์Šคํ„ฐ๋”” ์บ ํ”„ - CloudBread์˜คํ”ˆ์†Œ์Šค ๊ฒŒ์ž„ ์„œ๋ฒ„ ์—”์ง„ ์Šคํ„ฐ๋”” ์บ ํ”„ - CloudBread
์˜คํ”ˆ์†Œ์Šค ๊ฒŒ์ž„ ์„œ๋ฒ„ ์—”์ง„ ์Šคํ„ฐ๋”” ์บ ํ”„ - CloudBread
ย 
Windows Azure Web Sites - Things they donโ€™t teach kids in school - Comunity D...
Windows Azure Web Sites- Things they donโ€™t teach kids in school - Comunity D...Windows Azure Web Sites- Things they donโ€™t teach kids in school - Comunity D...
Windows Azure Web Sites - Things they donโ€™t teach kids in school - Comunity D...
ย 
PVS-Studio: analyzing pull requests in Azure DevOps using self-hosted agents
PVS-Studio: analyzing pull requests in Azure DevOps using self-hosted agentsPVS-Studio: analyzing pull requests in Azure DevOps using self-hosted agents
PVS-Studio: analyzing pull requests in Azure DevOps using self-hosted agents
ย 
Plone pwns
Plone pwnsPlone pwns
Plone pwns
ย 
AWS Cyber Security Best Practices
AWS Cyber Security Best PracticesAWS Cyber Security Best Practices
AWS Cyber Security Best Practices
ย 
Building Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEisBuilding Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEis
ย 
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShellCCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
ย 
Seguranca em APP Rails
Seguranca em APP RailsSeguranca em APP Rails
Seguranca em APP Rails
ย 
Cloud 101: Hands-on Heroku & AWS
Cloud 101: Hands-on Heroku & AWSCloud 101: Hands-on Heroku & AWS
Cloud 101: Hands-on Heroku & AWS
ย 
PHP on Windows and on Azure
PHP on Windows and on AzurePHP on Windows and on Azure
PHP on Windows and on Azure
ย 
ๅ‰็ซฏๆฆ‚่ฟฐ
ๅ‰็ซฏๆฆ‚่ฟฐๅ‰็ซฏๆฆ‚่ฟฐ
ๅ‰็ซฏๆฆ‚่ฟฐ
ย 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
ย 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
ย 
Saving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroSaving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio Haro
ย 
Html5 intro
Html5 introHtml5 intro
Html5 intro
ย 
Integrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code SuiteIntegrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code Suite
ย 

More from Vito Flavio Lorusso (8)

Prestashop and Azure
Prestashop and AzurePrestashop and Azure
Prestashop and Azure
ย 
Automatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource ManagerAutomatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource Manager
ย 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale Set
ย 
Nosql why and how on Microsoft Azure
Nosql why and how on Microsoft AzureNosql why and how on Microsoft Azure
Nosql why and how on Microsoft Azure
ย 
Cosa non fare assolutamente sul cloud
Cosa non fare assolutamente sul cloudCosa non fare assolutamente sul cloud
Cosa non fare assolutamente sul cloud
ย 
Windows azure e il supporto ai paradigmi del cloud
Windows azure e il supporto ai paradigmi del cloudWindows azure e il supporto ai paradigmi del cloud
Windows azure e il supporto ai paradigmi del cloud
ย 
Windows Azure and Joomla! @ Joomla day 2013
Windows Azure and Joomla! @ Joomla day 2013Windows Azure and Joomla! @ Joomla day 2013
Windows Azure and Joomla! @ Joomla day 2013
ย 
WPC2012 Windows Azure - Architetture e costi nell'era del cloud
WPC2012 Windows Azure - Architetture e costi nell'era del cloudWPC2012 Windows Azure - Architetture e costi nell'era del cloud
WPC2012 Windows Azure - Architetture e costi nell'era del cloud
ย 

Recently uploaded

Low Sexy Call Girls In Mohali 9053900678 ๐ŸฅตHave Save And Good Place ๐Ÿฅต
Low Sexy Call Girls In Mohali 9053900678 ๐ŸฅตHave Save And Good Place ๐ŸฅตLow Sexy Call Girls In Mohali 9053900678 ๐ŸฅตHave Save And Good Place ๐Ÿฅต
Low Sexy Call Girls In Mohali 9053900678 ๐ŸฅตHave Save And Good Place ๐Ÿฅต
Chandigarh Call girls 9053900678 Call girls in Chandigarh
ย 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
JOHNBEBONYAP1
ย 
๐Ÿ’š๐Ÿ˜‹ Salem Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
๐Ÿ’š๐Ÿ˜‹ Salem Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹๐Ÿ’š๐Ÿ˜‹ Salem Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
๐Ÿ’š๐Ÿ˜‹ Salem Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
nirzagarg
ย 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
SUHANI PANDEY
ย 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
SUHANI PANDEY
ย 
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
ย 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
SUHANI PANDEY
ย 
๐Ÿ’š๐Ÿ˜‹ Bilaspur Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
๐Ÿ’š๐Ÿ˜‹ Bilaspur Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹๐Ÿ’š๐Ÿ˜‹ Bilaspur Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
๐Ÿ’š๐Ÿ˜‹ Bilaspur Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
nirzagarg
ย 

Recently uploaded (20)

2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
ย 
Low Sexy Call Girls In Mohali 9053900678 ๐ŸฅตHave Save And Good Place ๐Ÿฅต
Low Sexy Call Girls In Mohali 9053900678 ๐ŸฅตHave Save And Good Place ๐ŸฅตLow Sexy Call Girls In Mohali 9053900678 ๐ŸฅตHave Save And Good Place ๐Ÿฅต
Low Sexy Call Girls In Mohali 9053900678 ๐ŸฅตHave Save And Good Place ๐Ÿฅต
ย 
WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)
WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)
WhatsApp ๐Ÿ“ž 8448380779 โœ…Call Girls In Mamura Sector 66 ( Noida)
ย 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
ย 
๐Ÿ’š๐Ÿ˜‹ Salem Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
๐Ÿ’š๐Ÿ˜‹ Salem Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹๐Ÿ’š๐Ÿ˜‹ Salem Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
๐Ÿ’š๐Ÿ˜‹ Salem Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
ย 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
ย 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
ย 
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
ย 
๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
๐“€คCall On 7877925207 ๐“€ค Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
ย 
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls DubaiDubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
ย 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
ย 
best call girls in Hyderabad Finest Escorts Service ๐Ÿ“ž 9352988975 ๐Ÿ“ž Available ...
best call girls in Hyderabad Finest Escorts Service ๐Ÿ“ž 9352988975 ๐Ÿ“ž Available ...best call girls in Hyderabad Finest Escorts Service ๐Ÿ“ž 9352988975 ๐Ÿ“ž Available ...
best call girls in Hyderabad Finest Escorts Service ๐Ÿ“ž 9352988975 ๐Ÿ“ž Available ...
ย 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
ย 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck Microsoft
ย 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
ย 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
ย 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
ย 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
ย 
๐Ÿ’š๐Ÿ˜‹ Bilaspur Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
๐Ÿ’š๐Ÿ˜‹ Bilaspur Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹๐Ÿ’š๐Ÿ˜‹ Bilaspur Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
๐Ÿ’š๐Ÿ˜‹ Bilaspur Escort Service Call Girls, 9352852248 โ‚น5000 To 25K With AC๐Ÿ’š๐Ÿ˜‹
ย 
Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...
Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...
Hireโ† Young Call Girls in Tilak nagar (Delhi) โ˜Ž๏ธ 9205541914 โ˜Ž๏ธ Independent Esc...
ย 

Capture, record, clip, embed and play, search: video from newbie to ninja

  • 1. Capture Record Clip Embed and play Search Video from newbie to ninja http://creativecommons.org/licenses/by-nc-sa/3.0/ Vito Flavio Lorusso @vflorusso http://github.com/vflorusso
  • 2.
  • 3. Things that kept me busyโ€ฆ 6. CDN 4. Cloud Ingest2. Broadcaster Toronto Facility 3. Encoding 5. Storage & Streaming 7. Immersive Player Client 15 live feeds 1. FIFA Broadcast Facilities
  • 4. H.264 HLS DASH What does โ€œvideo in the cloudโ€ look like? INGEST ENCODE DELIVER PACKAGE ENCRYPT
  • 5. โ€œThis looks complicatedโ€ฆ I am just a web developerโ€ฆ and I want my Youtubeโ€
  • 6. Creating the Media Services Account Create a Storage Account New-AzureStorageAccount -StorageAccountName [name] -Label [label] -Location [location] -Type [storage-type] Create a Media Services Account New-AzureMediaServicesAccount -Name [ams-name] - StorageAccountName [stg-name] -Location [location] Create a Media Services Account Get-AzureMediaServicesAccount -Name [ams-accountname]|Format- Table Name, MediaServicesPrimaryAccountKey
  • 7. Creating the CloudMediaContext using Microsoft.WindowsAzure.MediaServices; using Microsoft.WindowsAzure.MediaServices.Client; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Auth; using Microsoft.WindowsAzure.Storage.Blob; public static CloudMediaContext createAMSContext() { MediaServicesCredentials credentials = new MediaServicesCredentials(amsAccountName, amsAccountKey); CloudMediaContext mediaClient = new CloudMediaContext(credentials); return mediaClient; }
  • 8. Creating your with Azure Youtube Vimeo Dailymotion MP4 Video Upload and Create Asset Media Services Account WEB APP
  • 9. Uploading videosโ€ฆ (1/2) static public IAsset CreateAssetAndUploadSingleFile(CloudMediaContext amsAccount, AssetCreationOptions assetCreationOptions, string singleFilePath) { var assetName = "UploadSingleFile_" + DateTime.UtcNow.ToString(); var asset = CreateEmptyAsset(amsAccount, assetName, assetCreationOptions); var fileName = Path.GetFileName(singleFilePath); var assetFile = asset.AssetFiles.Create(fileName); Console.WriteLine("Created assetFile {0}", assetFile.Name); โ€ฆ
  • 10. Uploading videosโ€ฆ 2/2 var accessPolicy = amsAccount.AccessPolicies.Create(assetName, TimeSpan.FromDays(3), AccessPermissions.Write | AccessPermissions.List); var locator = amsAccount.Locators.CreateLocator(LocatorType.Sas, asset, accessPolicy); Console.WriteLine("Upload {0}", assetFile.Name); assetFile.Upload(singleFilePath); Console.WriteLine("Done uploading of {0} using Upload()", assetFile.Name); locator.Delete(); accessPolicy.Delete(); return asset; } โ€ฆ
  • 11. Creating your with Azure Youtube Vimeo Dailymotion MP4 Video Upload and Create Asset Media Services Account Media Services Encoding Units Process Asset Subtitles Thumbnails manifest Adaptive bitrate MP4 video WEB APP
  • 12. Processingโ€ฆ Encode static public IAsset EncodeToAdaptiveBitrateMP4Set(IAsset asset, string pathToLocalPresetFile) { IJob job = _context.Jobs.Create("Media Encoder Standard Job"); IMediaProcessor processor = GetLatestMediaProcessorByName("Media Encoder Standard"); ITask task = job.Tasks.AddNew("My encoding task", processor, "H264 Multiple Bitrate 720p", TaskOptions.None); task.InputAssets.Add(asset); task.OutputAssets.AddNew("Output asset", AssetCreationOptions.None); job.StateChanged += new EventHandler<JobStateChangedEventArgs>(JobStateChanged); job.Submit(); job.GetExecutionProgressTask(CancellationToken.None).Wait(); return job.OutputMediaAssets[0]; }
  • 13. Processingโ€ฆ Thumbnails <?xml version="1.0" encoding="utf-8"?> <Thumbnail Size="100%,*" Type="Jpeg" Filename="{OriginalFilename}_{Size}_{ThumbnailTime}_{ThumbnailIndex}_{Date}_{Ti me}.{DefaultExtension}"> <Time Value="10%" Step="10%" Stop="95%"/> </Thumbnail> string configuration = File.ReadAllText(Path.GetFullPath(configFilePath + @"Thumbnails.xml")); ITask task = job.Tasks.AddNew("My thumbnail task", processor, configuration, TaskOptions.ProtectedConfiguration);
  • 14. Processingโ€ฆ Subtitles string configuration = string.IsNullOrEmpty(configurationFile) ? "" : File.ReadAllText(configurationFile); ITask task = job.Tasks.AddNew("My Indexing Task", processor, configuration, TaskOptions.None); <?xml version="1.0" encoding="utf-8"?> <configuration version="2.0"> <input> <metadata key="title" value="[Title of the media file]" /> <metadata key="description" value="[Description of the media file]" /> </input> <settings> </settings> <features> <feature name="ASR"> <settings> <add key="Language" value="English"/> <add key="CaptionFormats" value="ttml;sami;webvtt"/> <add key="GenerateAIB" value ="true" /> <add key="GenerateKeywords" value ="true" /> </settings> </feature> </features> </configuration>
  • 15. Creating your with Azure Youtube Vimeo Dailymotion MP4 Video Upload and Create Asset Media Services Account Media Services Encoding Units Process Asset Subtitles Thumbnails manifest Adaptive bitrate MP4 video Media Services Streaming EndpointsCDN WEB APP
  • 16. Creating the Endpoint public static void createStreamingEndpoint(CloudMediaContext amsAccount, string seName) { IStreamingEndpoint amsEndpoint = amsAccount.StreamingEndpoints.Create(seName, 1); amsEndpoint.StartAsync(); }
  • 17. Get the streaming URL (1/2) static string streamSmoothLegacy = "(format=fmp4-v20)"; static string streamDash = "(format=mpd-time-csf)"; static string streamHLSv4 = "(format=m3u8-aapl)"; static string streamHLSv3 = "(format=m3u8-aapl-v3)"; static string streamHDS = "(format=f4m-f4f)"; private static string GetStreamingOriginLocatorEndPoint(CloudMediaContext amsAccount, IAsset assetToStream) { var theManifest = from f in assetToStream.AssetFiles where f.Name.EndsWith(".ism") select f; // Cast the reference to a true IAssetFile type. IAssetFile manifestFile = theManifest.First(); IAccessPolicy policy = null; ILocator originLocator = null; // Create a 30-day readonly access policy. policy = amsAccount.AccessPolicies.Create("Streaming policy", TimeSpan.FromDays(30), AccessPermissions.Read); โ€ฆ
  • 18. // Create an OnDemandOrigin locator to the asset. originLocator = amsAccount.Locators.CreateLocator(LocatorType.OnDemandOrigin, assetToStream, policy, DateTime.UtcNow.AddMinutes(-5)); // Create a full URL to the manifest file. Use this for playback // in streaming media clients. string urlForClientStreaming = originLocator.Path + manifestFile.Name + "/manifest"; // Return the locator. return urlForClientStreaming; } Get the streaming URL (2/2) โ€ฆ
  • 19. Managing Media Services from ยซcodeยป โ€ข Command Line โ€ข Windows: PowerShell โ€ข Code โ€ข Azure Media Services REST APIs โ€ข Azure Media Services SDK for .NET โ€ข Azure SDK for Java โ€ข Azure Media Services for Node.js โ€ข Azure PHP SDK
  • 20. Wrapping up: what makes a Media Service Media Service Account Storage Account AssetAssetAsset Streaming Endpoint Streaming Unit Encoding Job Task Live Streaming Channel Program
  • 21. Creating your with Azure Youtube Vimeo Dailymotion MP4 Video Upload and Create Asset Media Services Account Media Services Encoding Units Process Asset Subtitles Thumbnails manifest Adaptive bitrate MP4 video Media Services Streaming EndpointsCDN Azure Search WEB APP <video /> <img /> <input /> <div />
  • 22. Create Search Account #only lowercase letters and numbers accepted $searchdeploymentname = "vitolosearch01" $dbdeploymentname = "vitotestdb02" $dbservername = "vitotestdbsrv02" $dbadminname = "vito" $dbpassword = Read-Host "Type DB password" #parameters for creating the search service $searchparams = @{name=$deploymentname; location=$location; sku= "standard"; replicaCount=1; partitionCount=1} Switch-AzureMode AzureResourceManager Add-AzureAccount -Credential $credential Select-AzureSubscription $subscriptionName New-AzureResourceGroup โ€“Name $resourcegroupname โ€“Location $location New-AzureResourceGroupDeployment -ResourceGroupName $resourcegroupname - nameFromTemplate $searchdeploymentname -DeploymentName $searchdeploymentname - TemplateFile .Microsoft.Search.1.0.5.json -TemplateParameterObject $searchparams
  • 23. Create Index string searchServiceName = ConfigurationManager.AppSettings["SearchServiceName"]; string apiKey = ConfigurationManager.AppSettings["SearchServiceApiKey"]; _searchClient = new SearchServiceClient(searchServiceName, new SearchCredentials(apiKey)); _indexClient = _searchClient.Indexes.GetClient(_moviesIndexName); _serviceUri = new Uri("https://" + ConfigurationManager.AppSettings["SearchServiceName"] + ".search.windows.net"); _httpClient = new HttpClient(); _httpClient.DefaultRequestHeaders.Add("api-key", apiKey); CreateMovieIndex();
  • 24. CreateMovieIndex() internal static void CreateIndex(string collectionName) { try { var definition = new Index() { Name = collectionName, Fields = new[] { new Field(โ€œMOVIE_KEY", DataType.String) { IsKey = true, IsSearchable = false, IsFilterable = false, IsSortable = false, IsFacetable = false, IsRetrievable = true}, new Field(โ€œMOVIE_DATA", DataType.String) { IsKey = false, IsSearchable = true, IsFilterable = true, IsSortable = false, IsFacetable = true, IsRetrievable = true} } }; _searchClient.Indexes.Create(definition); } catch (Exception ex) { Console.WriteLine("Error creating index: {0}rn", ex.Message.ToString()); } }
  • 25. Wrap up: Azure Search Search Service Client Collection Index Fields Facets Indexer Search Query key
  • 26. Creating your with Azure Youtube Vimeo Dailymotion MP4 Video Upload and Create Asset Media Services Account Media Services Encoding Units Process Asset Subtitles Thumbnails manifest Adaptive bitrate MP4 video Media Services Streaming EndpointsCDN Azure Search WEB APP <video /> <img /> <input /> <div />
  • 27. The web page: Media Player <link href=โ€œhttp://amp.azure.net/libs/amp/latest/skins/amp- default/azuremediaplayer.min.css" rel="stylesheet"> <script src= โ€œhttp://amp.azure.net/libs/amp/[version]/azuremediaplayer.min.js"></script> <video id="vid1" class="azuremediaplayer amp-default-skin" autoplay controls width="640" height="400" poster="poster.jpg" data- setup='{"nativeControlsForTouch": false}'> <source src="http://amssamples.streaming.mediaservices.windows.net/91492 735-c523-432b-ba01- faba6c2206a2/AzureMediaServicesPromo.ism/manifest" type="application/vnd.ms-sstr+xml" /> <p class="amp-no-js"> To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video </p> </video>
  • 28. The web page: Search <html> <head> <script src="azure-search.min.js"></script> </head> <body> <script> var client = AzureSearch({ url: "https://MY_SEARCH_SERVICE_NAME.search.windows.net", key:"MY_QUERY_KEY" }); client.search('myindex', {search:'document'}, function(err, results){ // results is an array of matching documents }); </script> </body> </html>
  • 30. Useful links Azure Media Services Dev Center http://azure.microsoft.com/en-us/develop/media-services/ Azure Media Services Explorer http://aka.ms/amse Azure Media Player http://aka.ms/azuremediaplayer Azure Search https://azure.microsoft.com/en- us/documentation/articles/search-workflow/