<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mingfei YanMingfei Yan - We can burn brighter than the sun.</title>
	<atom:link href="http://mingfeiy.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mingfeiy.com</link>
	<description>We can burn brighter than the sun.</description>
	<lastBuildDate>Sat, 20 Apr 2013 13:47:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>Demo &#8211; how to create HLS and Smooth Streaming assets using dynamic packaging</title>
		<link>http://mingfeiy.com/demo-how-to-create-hls-and-smooth-streaming-assets-using-dynamic-packaging/</link>
		<comments>http://mingfeiy.com/demo-how-to-create-hls-and-smooth-streaming-assets-using-dynamic-packaging/#comments</comments>
		<pubDate>Sat, 20 Apr 2013 13:47:00 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Code blocks]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Dynamic Remux]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1635</guid>
		<description><![CDATA[<p>This blog post is a walk-through on how to create HLS and Smooth Streaming assets using dynamic packaging with Windows Azure Media Services (WAMS), by using .NET SDK. What is dynamic packing? Before talking about dynamic packing, we have to mention what&#8217;s the traditional way of doing things. If you want to delivery both Http [...]</p><p>The post <a href="http://mingfeiy.com/demo-how-to-create-hls-and-smooth-streaming-assets-using-dynamic-packaging/">Demo &#8211; how to create HLS and Smooth Streaming assets using dynamic packaging</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>This blog post is a walk-through on how to create HLS and Smooth Streaming assets using dynamic packaging with <a href="http://www.windowsazure.com/en-us/home/scenarios/media/">Windows Azure Media Services</a> (WAMS), by using .NET SDK.</p>
<blockquote><p>What is dynamic packing?</p>
</blockquote>
<p>Before talking about dynamic packing, we have to mention what&#8217;s the traditional way of doing things. If you want to delivery both Http Live Streaming and Smooth Streaming, you have to store both of them. Therefore, you stream HLS content to iOS devices and Smooth Streaming content to Windows 8 for instance. However, by using dynamic packing feature in WAMS, You only need to store a Mp4 file in your storage, and we dynamically packaging Mp4 file into HLS or Smooth Streaming based on your client request. If it needs HLS stream, we will package Mp4 into HLS on the fly, and serve out to your client. In this case, you no longer need to store a copy of smooth streaming and HLS, hence, we help you save storage cost by half at least. This diagram below demonstrates what I just described:<span id="more-1635"></span></p>
<div id="attachment_1637" class="wp-caption aligncenter" style="width: 501px"><a href="http://mingfeiy.com/wp-content/uploads/2013/04/Dynamic-Packaging.png"><img class=" wp-image-1637  " alt="How dynamic packaging works in WAMS" src="http://mingfeiy.com/wp-content/uploads/2013/04/Dynamic-Packaging-1024x640.png" width="491" height="307" /></a>
<p class="wp-caption-text">How dynamic packaging works in WAMS</p>
</div>
<blockquote><p>Pre-requisites</p>
</blockquote>
<p>a. Besides of having a media services account, you need to request for at least one On-Demand Streaming Reserved Unit. You could use portal and click on Scale tab. Pricing detail please refers <a href="http://mingfeiy.com/windows-azure-media-services-pricing-explanation/">here</a>.</p>
<p>Noted if you don&#8217;t have any on-demand streaming reserved unit, you will still be able to access our origin server. However, dynamic packaging feature won&#8217;t be unable.  You could still compose Smooth Streaming and HLS URLs, but you won&#8217;t get back any content by accessing them.<br />
<a href="http://mingfeiy.com/wp-content/uploads/2013/04/reserverdunit.png"><img class="aligncenter  wp-image-1638" alt="On-demand Reserved Unit" src="http://mingfeiy.com/wp-content/uploads/2013/04/reserverdunit.png" width="551" height="205" /></a></p>
<p>b. Here is a sample WMV file and you could download <a href="http://sdrv.ms/11CnDkX">here</a>.<br />
c. This is the <a href="http://sdrv.ms/U4mCJi">finished project</a> if you find the following tutorial hard to follow.</p>
<p>1. Open Visual Studio 2012 and create a console application.<br />
2. Add in <a href="https://nuget.org/packages/windowsazure.mediaservices/">WindowsAzure.mediaservices</a> through Nuget in your reference folder.<br />
3. Add in the following code in class Program. You could retrieve your account key and account name from portal. SingleInputFilePath is where you store the source file. And the outputPath is where we will place the file which contains the final streaming URLs information.</p><pre class="crayon-plain-tag">private static string accKey = "YOUR_ACCOUNT_KEY";
private static string accName = "YOUR_ACCOUNT_NAME";

private static CloudMediaContext context;
private static string singleInputFilePath = Path.GetFullPath(@"C:\tr\azure.wmv");
private static string outputPath = Path.GetFullPath(@"C:\tr");</pre><p>4. Add in the following methods to upload asset and track your asset upload progress:</p><pre class="crayon-plain-tag">private static string CreateAssetAndUploadFile(CloudMediaContext context)
{
    var assetName = Path.GetFileNameWithoutExtension(singleInputFilePath);
    var inputAsset = context.Assets.Create(assetName, AssetCreationOptions.None);
    var assetFile = inputAsset.AssetFiles.Create(Path.GetFileName(singleInputFilePath));
    assetFile.UploadProgressChanged += new EventHandler&lt;UploadProgressChangedEventArgs&gt;(assetFile_UploadProgressChanged);
    assetFile.Upload(singleInputFilePath);
    return inputAsset.Id;
}

        static void assetFile_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
        {
            Console.WriteLine(string.Format("{0}   Progress: {1:0}   Time: {2}", ((IAssetFile)sender).Name, e.Progress, DateTime.UtcNow.ToString(@"yyyy_M_d__hh_mm_ss")));
        }</pre><p>5. Adding encoding method which transcode our WMV input file into Mp4. Here are various <a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj129582.aspx#H264Encoding">H.264 encoding presents</a> that are available in Windows Azure Media Encoder.</p><pre class="crayon-plain-tag">private static IJob EncodeToMp4(CloudMediaContext context, string inputAssetId){
    var inputAsset = context.Assets.Where(a =&gt; a.Id == inputAssetId).FirstOrDefault();
    if (inputAsset == null) throw new ArgumentException("Could not find assetId: " + inputAssetId);
    var encodingPreset = "H264 Adaptive Bitrate MP4 Set SD 16x9";
    IJob job = context.Jobs.Create("Encoding " + inputAsset.Name + " to " + encodingPreset);
    IMediaProcessor latestWameMediaProcessor = (from p in context.MediaProcessors where p.Name == "Windows Azure Media Encoder" select p).ToList().OrderBy(wame =&gt; new Version(wame.Version)).LastOrDefault();
    ITask encodeTask = job.Tasks.AddNew("Encoding", latestWameMediaProcessor, encodingPreset, TaskOptions.None);
    encodeTask.InputAssets.Add(inputAsset);
    encodeTask.OutputAssets.AddNew(inputAsset.Name + " as " + encodingPreset, AssetCreationOptions.None);

    job.StateChanged += new EventHandler&lt;JobStateChangedEventArgs&gt;(JobStateChanged);
    job.Submit();
    job.GetExecutionProgressTask(CancellationToken.None).Wait();

    return job;
}

static void JobStateChanged(object sender, JobStateChangedEventArgs e)
{
    Console.WriteLine(string.Format("{0}\n  State: {1}\n  Time: {2}\n\n",((IJob)sender).Name, e.CurrentState, DateTime.UtcNow.ToString(@"yyyy_M_d__hh_mm_ss")));
}</pre><p>6. The following steps are different from the traditional way of packing asset. You will create locator for your Mp4 and just by appending either /manifest (for Smooth Streaming) or /manifest(format=m3u8-aapl), we will dynamically packaging your media assets into Smooth Streaming or HLS based on your URL request.</p><pre class="crayon-plain-tag">private static string GetDynamicStreamingUrl(CloudMediaContext context, string outputAssetId, LocatorType type){
    var daysForWhichStreamingUrlIsActive = 365;
    var outputAsset = context.Assets.Where(a =&gt; a.Id == outputAssetId).FirstOrDefault();
    var accessPolicy = context.AccessPolicies.Create(outputAsset.Name,TimeSpan.FromDays(daysForWhichStreamingUrlIsActive),AccessPermissions.Read | AccessPermissions.List);
    var assetFiles = outputAsset.AssetFiles.ToList();
    if (type == LocatorType.OnDemandOrigin){
    var assetFile = assetFiles.Where(f =&gt; f.Name.ToLower().EndsWith(".ism")).FirstOrDefault();
    if (assetFile != null){
    var locator = context.Locators.CreateLocator(LocatorType.OnDemandOrigin, outputAsset, accessPolicy);
    Uri smoothUri = new Uri(locator.Path + assetFile.Name + "/manifest");
    return smoothUri.ToString();
    }
  }
    if (type == LocatorType.Sas){
    var mp4Files = assetFiles.Where(f =&gt; f.Name.ToLower().EndsWith(".mp4")).ToList();
    var assetFile = mp4Files.OrderBy(f =&gt; f.ContentFileSize).LastOrDefault(); //Get Largest File
    if (assetFile != null)
    {
    var locator = context.Locators.CreateLocator(LocatorType.Sas, outputAsset, accessPolicy);
    var mp4Uri = new UriBuilder(locator.Path);
    mp4Uri.Path += "/" + assetFile.Name;
    return mp4Uri.ToString();
    }
}

return string.Empty;
        }
}</pre><p>7. Let&#8217;s add in a utility method for writing locator URL into the file.</p><pre class="crayon-plain-tag">static void WriteToFile(string outFilePath, string fileContent)
{
    StreamWriter sr = File.CreateText(outFilePath);
    sr.Write(fileContent);
    sr.Close();
}</pre><p>The reason why we want to write locator URLs into a file is because in portal, you will only see the Mp4 SAS URL, which points to the storage. You won&#8217;t be able to grab the locator URL unless you write them down.<br />
8. Adding the following lines into main program in order to create the following workflow: upload WMV -&gt;  encode into MP4 -&gt; create locator -&gt; write locator URL for both Smooth Streaming and HLS into a file.</p><pre class="crayon-plain-tag">static void Main(string[] args)
 {
    context = new CloudMediaContext(accName, accKey);
    string inputAssetId = CreateAssetAndUploadFile(context);
    IJob job = EncodeToMp4(context, inputAssetId);
    var mp4Asset = job.OutputMediaAssets.FirstOrDefault();
    string mp4StreamingUrl = GetDynamicStreamingUrl(context, mp4Asset.Id, LocatorType.Sas);
    string smoothStreamingUrl = GetDynamicStreamingUrl(context, mp4Asset.Id, LocatorType.OnDemandOrigin);
    string hlsStreamingUrl = smoothStreamingUrl + "(format=m3u8-aapl)";
    string content = "\n Mp4 Url:    \n" + mp4StreamingUrl + "\n Smooth Url: \n" + smoothStreamingUrl + "\n HLS Url:    \n" + hlsStreamingUrl;
    Console.WriteLine("\n Mp4 Url:    \n" + mp4StreamingUrl);
    Console.WriteLine("\n Smooth Url: \n" + smoothStreamingUrl);
    Console.WriteLine("\n HLS Url:    \n" + hlsStreamingUrl);

    string outFilePath = Path.GetFullPath(outputPath + @"\" + "StreamingUrl.txt");
    WriteToFile(outFilePath, content);
    Console.ReadKey();
    Console.ReadKey();
}</pre><p>9. Now you could press F5 and run this program. This is a printscreen of my console.<br />
<a href="http://mingfeiy.com/wp-content/uploads/2013/04/demo.png"><img class="aligncenter  wp-image-1653" alt="Console application" src="http://mingfeiy.com/wp-content/uploads/2013/04/demo.png" width="536" height="310" /></a><br />
10. I have uploaded the whole project <a href="http://sdrv.ms/11CnDkX">here </a>and feel free to try it out yourself!</p>
<p><span style="color: #ff6600;" data-mce-mark="1">Additional resources and questions:</span></p>
<ul>
<li>• Technical blog: <a href="http://blog-ndrouin.azurewebsites.net/?p=1721">Dynamic Packaging and Encoding and Streaming Reserved Units</a> by Nick Drouin</li>
<li>• Ch9 video: <a href="http://channel9.msdn.com/Series/Windows-Azure-Media-Services-Tutorials/Introduction-to-dynamic-packaging">Introduction to dynamic packing</a> by Nick Drouin</li>
<li>
<blockquote><p>Question: What are supported input format and output format? Is MP4 the only input?</p>
</blockquote>
</li>
<li><strong>Answer</strong>: We support both Smooth Streaming format and Mp4 as input. And for output, we generate Smooth Streaming and HLS v4. Please noted that we dont support encrypted content as source files, neither Storage Encryption nor Common Encryption.</li>
<li>
<blockquote><p>Question: Could I use an existing Mp4 or Smooth Streaming file as input without encoding?</p>
</blockquote>
</li>
<li><strong>Answer</strong>: Yes. You could upload existing adaptive bitrate sets and validate them using the Media Packager. Here is a <a href="http://msdn.microsoft.com/en-us/library/jj889436.aspx">MSDN tutorial</a> on validating your existing asset. Please check it out if you have questions.</li>
</ul>
<p>The post <a href="http://mingfeiy.com/demo-how-to-create-hls-and-smooth-streaming-assets-using-dynamic-packaging/">Demo &#8211; how to create HLS and Smooth Streaming assets using dynamic packaging</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/demo-how-to-create-hls-and-smooth-streaming-assets-using-dynamic-packaging/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My Experience of NAB Show 2013</title>
		<link>http://mingfeiy.com/nabshow/</link>
		<comments>http://mingfeiy.com/nabshow/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 16:23:22 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[NAB]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1599</guid>
		<description><![CDATA[<p>This is my first time attending NAB show and this year, it was held at Vegas Convention center from April 6th to 11th. My team (Windows Azure Media Services) shared Microsoft booth area with other products such as Surface, Office 365 and Big Data. While setting up the booth on Sunday before the even started, [...]</p><p>The post <a href="http://mingfeiy.com/nabshow/">My Experience of NAB Show 2013</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>This is my first time attending <a href="http://nabshow.com/">NAB show</a> and this year, it was held at Vegas Convention center from April 6th to 11th. My team (<a href="http://www.windowsazure.com/en-us/home/scenarios/media/">Windows Azure Media Services</a>) shared Microsoft booth area with other products such as Surface, Office 365 and Big Data. While setting up the booth on Sunday before the even started, I took a walk in the convention center and I saw booth setups with gigantic broadcast TV screens, pro-grade camera control panel, multi-angle cameras, it felt like being in Hollywood studios or Big News TV channels. When I joined the Windows Azure Media Services a year ago,it was to work on cloud computing technologies and I never thought I will end up being associated to the broadcasting industry. NAB Show, makes this association very tangible for me now, during these 4 days in Vegas, I felt the excitement of being part of such massive and fast moving industry. Broadcast business has its magic, it captivates its audience, it&#8217;s an art that I have witnessed in Vegas. <span id="more-1599"></span></p>
<p><a href='http://mingfeiy.com/nabshow/8655601989_79ff0d97c9_c/' title='Live Streaming Booth'><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/8655601989_79ff0d97c9_c-150x150.jpg" class="attachment-thumbnail" alt="LiveStream Booth" /></a><br />
<a href='http://mingfeiy.com/nabshow/8655602771_0a63809183_c/' title='Multi-angle camera'><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/8655602771_0a63809183_c-150x150.jpg" class="attachment-thumbnail" alt="Multi-Angle Camera" /></a><br />
<a href='http://mingfeiy.com/nabshow/8655603689_0ef9bf1613_c/' title='Microsoft Booth'><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/8655603689_0ef9bf1613_c-150x150.jpg" class="attachment-thumbnail" alt="Microsoft Booth" /></a><br />
<a href='http://mingfeiy.com/nabshow/8656703642_dc3c78db60_c/' title='Red Film'><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/8656703642_dc3c78db60_c-150x150.jpg" class="attachment-thumbnail" alt="Red Film" /></a><br />
<a href='http://mingfeiy.com/nabshow/8656705184_a556c209e8_c/' title='WAMS demo'><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/8656705184_a556c209e8_c-150x150.jpg" class="attachment-thumbnail" alt="WAMS Demo" /></a><br />
<a href='http://mingfeiy.com/nabshow/8656708438_52c628f2c0_c/' title='Canon Studio'><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/8656708438_52c628f2c0_c-150x150.jpg" class="attachment-thumbnail" alt="Canon Booth" /></a><br />
<a href='http://mingfeiy.com/nabshow/8656709174_db9f022916_c/' title='GO Pro Car'><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/8656709174_db9f022916_c-150x150.jpg" class="attachment-thumbnail" alt="Go Pro Car" /></a><br />
<a href='http://mingfeiy.com/nabshow/8656710266_a21181de66_c/' title='GoPro Helicopter'><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/8656710266_a21181de66_c-150x150.jpg" class="attachment-thumbnail" alt="Go Pro Helicopter" /></a><br />
<a href='http://mingfeiy.com/nabshow/photo/' title='Multi-screen video demo '><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/photo-150x150.jpg" class="attachment-thumbnail" alt="WAMS Multi-Screen demo" /></a><br />
<a href='http://mingfeiy.com/nabshow/28177_10151545588605860_678887278_n/' title='NAB booth set up'><img width="150" height="150" src="http://mingfeiy.com/wp-content/uploads/2013/04/28177_10151545588605860_678887278_n-150x150.jpg" class="attachment-thumbnail" alt="NAB Show booth set up" /></a>
</p>
<p>Technology wise, last year my team announced Windows Azure Media Service in NAB, that was a big milestone for us. Since our business grew stronger and this year our biggest news was the partnership announcement with NBC. You can find the original press release here: <a href="http://www.microsoft.com/en-us/news/Press/2013/Apr13/04-09NAB13PR.aspx">Microsoft Teams Up With NBC Sports Group to Deliver Compelling Sports Programming Across Digital Platforms Using Windows Azure</a>.</p>
<p>I spent many hours walking around the booth and talking to the participants. There were three big exhibition halls and each of them was a double deck. No wonder this event could host more than 97,000 attendees and +1.500 exhibitors.</p>
<p>Let me try to summarize for you some of my take-away:</p>
<ul>
<li><strong>&#8220;4K&#8221; is the buzz word of NAB 2013 and it gets really loud,</strong></li>
<li><a href="http://en.wikipedia.org/wiki/4K_resolution">4K </a>was everywhere throughout the show floors. 4K camera, 4K display, 4K interactive screen, etc. In the video, I was with my friend standing in front of a gigantic 4K TV screen with some car racing footage. It was as if the car was just in front of us. &#8220;I want one in my living room!&#8221; My friend whispered. then immediately said &#8220;Em, probably not&#8221;. No one knows whether 4K will be successfully commercialized, or it is just another false attempt like 3D TV. on the positive, I do see very interesting usage of 4K. In Canon&#8217;s booth, they had a live shooting session, and the Canon photographer, using 4K camera, explained that the client could easily print out any single frame of the 4K camera footage. With a 4k camera, a photographer can finish a shooting within 1 day, where it took 3 to 4 days with traditional hardware.</li>
<li><strong>Multi-screen delivery is a must</strong></li>
<li>I swung by many tech companies booths and most of them had a collection of devices displayed with video playback. It is clear to me that the content format doesn&#8217;t matter as long as it can be displayed on all devices. <a href="http://www.youtube.com/watch?v=y3f8B2b-f8c">Here </a>is a video of our partner Axinom, they were demoing a play back solution on multiple devices, including gesture-controlled Xbox video application.</li>
<li><strong>Cloud computing is still young </strong></li>
<li>On day 1, I was having lunch and some people joined me, among them a director and a music producer. I shared with them my works on video solution with cloud computing. These guys never heard about cloud solution! We engaged in a very interesting discussion when the producer asked me about cloud post-production software. His question was basically the following &#8221; does it mean that by pressing a button, I can encode video in the cloud?&#8221; I told him that&#8217;s absolutely a very valid scenario. After this conversation, I realized that the transition from traditional media hardware to the cloud may take some time, but this transition will be transparent to the end user. Traditional software companies who run on-premises transcoding business, could and would potentially offer cloud solution with no impact on the end user. The existing on-premises ecosystem could move onto cloud infrastructures and it will harvest the first movers advantage in an industry where no one wants to be left behind.</li>
</ul>
<p>The overall NAB 2013 experience has been overwhelmingly good for me and I am really excited to be part of what will transform the broadcasting industry in the future, the paradigm shift to could computing!</p>
<p>This is a short video I put together to capture the vibe of the event.<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/vkeIyHhoFz0" frameborder="0" allowfullscreen=""></iframe></p>
<p>The post <a href="http://mingfeiy.com/nabshow/">My Experience of NAB Show 2013</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/nabshow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Azure Media Services Pricing Details</title>
		<link>http://mingfeiy.com/windows-azure-media-services-pricing-explanation/</link>
		<comments>http://mingfeiy.com/windows-azure-media-services-pricing-explanation/#comments</comments>
		<pubDate>Tue, 26 Feb 2013 02:48:38 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Media Services]]></category>
		<category><![CDATA[Pricing]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1571</guid>
		<description><![CDATA[<p>This blog is credited to Program Manager Anton Kucer in our Media services team. I learnt a lot pricing detail from a email conversation with him. If you choose to use Windows Azure Media Services, here is a detail explanation of what you will need to pay. Also, it provides some guidance on how you choose right [...]</p><p>The post <a href="http://mingfeiy.com/windows-azure-media-services-pricing-explanation/">Windows Azure Media Services Pricing Details</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>This blog is credited to Program Manager Anton Kucer in our Media services team. I learnt a lot pricing detail from a email conversation with him. If you choose to use Windows Azure Media Services, here is a detail explanation of what you will need to pay. Also, it provides some guidance on how you choose right amount of services such as # of reserved units. If you have more questions, please put your comments below and I will pick them up into Q&amp;A section in this blog.</p>
<p>These are<a href="http://www.windowsazure.com/en-us/pricing/details/#header-9"> pricing details</a> posted on official Windows Azure home page. Please read the official post first and if you still have questions, read this blog which is my best effort for explaining pricing. As said, if you choose to go through general media workflow (encoding your content and host them for streaming purpose), you will incur 4 types of costs. <span id="more-1571"></span></p>
<h5><span style="color: #ff6600;">1. Encoding GB Processed</span></h5>
<p>Encode charges = Input File size + (Each output format size). For instance, I could load a video in WMV format with 2 GB, and after encoding into H.264, I get a output file of 2.5 GB by using <span style="color: #ff6600;">Windows Azure Media Encoder</span>. In that case my total encoding charges will be 4.5 GB of data. Price detail please see the table below and please contact <span style="color: #ff6600;">winazinqr@microsoft.com</span> for monthly data usage more than 100 TB. Pricing in this table may change over time and please refer to <a href="http://www.windowsazure.com/en-us/pricing/details/#header-9">official page</a>.</p>
<p><a href="http://mingfeiy.com/windows-azure-media-services-pricing-explanation/pricing/" rel="attachment wp-att-1574"><img class="aligncenter size-full wp-image-1574" alt="pricing" src="http://mingfeiy.com/wp-content/uploads/2013/02/pricing.png" width="287" height="199" /></a></p>
<h5><span style="color: #ff6600;">2. Encoding Reserved Units</span></h5>
<p>The cost of encoding reserved unit is<span style="color: #ff6600;"> $99/month</span> but your account will be charged on a daily basis using the highest number of Reserved Units that are provisioned in your account on that day. The daily rate is calculated by dividing $99 by 31. For example if you start with 3 Reserved Units but an hour later you go to 5 and then another hour later you drop to 2,  the charge will be based on 5 Reserved Units for that day.</p>
<p>With Reserved Units you get the benefit of parallelization of your tasks. As an example if you have 5 Reserved Units, then the service will run 5 of your tasks in parallel. As soon as one of the task finishes, the next one from your queue will get picked up for processing</p>
<p>If you do not have any reserved units then the wait time for a task to start processing may be several hours. If you have only reserved unit then the service will run one task at a time but will schedule the next one as soon as the current one finishes</p>
<p>In summary, the number of media tasks that will be processed in parallel will be equal to the number of encoding reserved units provisioned in your account at any given time. In Windows Azure portal, you could request for 5 Reserved Units max, but you could follow<a href="http://social.msdn.microsoft.com/Forums/en-US/MediaServices/threads?announcementId=3266827d-2ca2-40fc-b9db-23b540f69bd5#3266827d-2ca2-40fc-b9db-23b540f69bd5"> this post</a> to request for more Reserved Units.</p>
<p><strong><span style="color: #3366ff;"><em>Question: By adding more encoding reserved units, will it speed up the encoding process? </em></span></strong></p>
<p><span style="color: #3366ff;">Answer: With Reserved Units, the time of encoding one single media file will not change. However, if you have multiple files, the total encoding time will be shortened as multiple files will be encoded in parallel.</span></p>
<h5><span style="color: #ff6600;">3. Data storage Cost</span></h5>
<p>Videos will be stored in Windows Azure Blob storage hence you will need to pay for normal storage cost. Please refer to <a href="http://www.windowsazure.com/en-us/pricing/details/#header-4">Storage price for Windows Azure</a>.</p>
<h5><span style="color: #ff6600;">4. On-Demand Streaming Reserved Units</span></h5>
<p>The cost of On-Demand Streaming Units is <span style="color: #ff6600;">$199 each per month</span>. For each reserved unit there is a minimum of 200 Mbps of bandwidth allocated. The SLA currently only applies when one is using 80% or less of available bandwidth. That said, in many cases customers will see significantly more bandwidth available per reserved unit. This is because each reserved unit is made up of 1 or more medium VM’s. Additional VM’s are added to ensure allocated bandwidth per reserved unit isn’t impacted when VM’s fail, are upgraded, etc.  When all VM’s are available, at lower # of reserved units there is significantly more excess network capacity available. As the # of reserved units is increased the excess network capacity drops off and levels out at 6-8% range.</p>
<p><strong><span style="color: #3366ff;"><em>Question: Could you still do streaming without purchasing a on-demand streaming reserved unit?</em></span></strong></p>
<p><span style="color: #3366ff;">Answer: Yes. However, without a reserved unit, there is no SLA and streaming is done via a shared pool of resources for which there is no ability to control individual customers usage. So if one customer starts using lots of bandwidth (e.g. viewing of one of their videos goes viral) this will have an impact on all other customers. The shared pool is great for customers that just have limited streaming capabilities and aren’t in need of an SLA.</span></p>
<p><strong><span style="color: #3366ff;"><em>Question: How do I estimate # of on-demand streaming reserved unit I need?</em></span></strong></p>
<p><span style="color: #3366ff;">Answer: For the most conservative estimate you can go directly with SLA limitations - i.e. total bandwidth is 160 Mbps * # of RU’s. To obtain an initial estimate you can take the # of concurrent customers * top bitrate that you are encoding video at. For most video business, I think it is always better to be conservative first and if you end up over provisioning, you could always reduce # of reserved unit.</span></p>
<p><span style="color: #3366ff;">Use of a CDN complicates this equation as the amount of bandwidth is now directly related to how customer requests are spread across content. This will be unique per each customer. Requests for content that has been recently served by the CDN will be served directly from the CDN’s cache versus request to a customer’s RU’s. To simplify initial determination of impact of CDN one can just estimate % of content that is long tail content (seldom watched so low likelihood of being in CDN cache) versus fat tail content (watched often so being highly likelihood of being in CDN cache). Then use this percentage to adjust down the # of RU’s required.</span></p>
<p>The post <a href="http://mingfeiy.com/windows-azure-media-services-pricing-explanation/">Windows Azure Media Services Pricing Details</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/windows-azure-media-services-pricing-explanation/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Breaking changes for Windows Azure Media Services .NET SDK GA</title>
		<link>http://mingfeiy.com/breaking-changes-for-windows-azure-media-services-ga/</link>
		<comments>http://mingfeiy.com/breaking-changes-for-windows-azure-media-services-ga/#comments</comments>
		<pubDate>Wed, 16 Jan 2013 18:53:50 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Code blocks]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows Azure Media Services]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1532</guid>
		<description><![CDATA[<p>On Dec 14th 2012, we update our .NET SDK to 2.0.1.0 and you could download the latest SDK here. And starting from yesterday (Jan 14th, 2013), we drop the support for older version of .NET SDK, which we released in Preview. In another word, our server no longer recognizes some of your old APIs. If [...]</p><p>The post <a href="http://mingfeiy.com/breaking-changes-for-windows-azure-media-services-ga/">Breaking changes for Windows Azure Media Services .NET SDK GA</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><span style="font-size: 14px;">On Dec 14th 2012, we update our <strong>.NET SDK to 2.0.1.0</strong> and you could download the latest SDK </span><a style="font-size: 14px; line-height: 21px;" href="https://nuget.org/packages/windowsazure.mediaservices">here</a><span style="font-size: 14px;">. And starting from yesterday (Jan 14th, 2013), we drop the support for older version of .NET SDK, which we released in Preview. In another word, our server no longer recognizes some of your old APIs.</span><strong style="font-size: 14px;"> If you find your older version of .NET SDK no longer works, don&#8217;t panic! Please read through this blog and see whether you could fix the code. </strong></p>
<p>If you still can&#8217;t find a clue, please bring your question to <a href="http://social.msdn.microsoft.com/Forums/en-US/MediaServices/threads">Windows Azure Media Services Forum</a> and we will try our best to help you.<span id="more-1532"></span></p>
<h4><span style="color: #3366ff;">1. Create Asset</span></h4>
<h5><span style="color: #3366ff;">• You have to pass in an assetName for asset creation</span></h5>
<p><em>Code in old API:</em></p><pre class="crayon-plain-tag">IAsset asset = mediaContext.Assets.Create(inputPath);</pre><p><em>Code in current API:</em></p><pre class="crayon-plain-tag">var assetName = "UploadSingleFile_" + DateTime.UtcNow.ToString();
var asset = mediaContext.Assets.Create(assetName, assetCreationOptions);</pre><p>The <strong>assetName</strong> here will show up in Windows Azure Media Services portal. So I guess you may have a more user-friendly name than mine to be able to manage your assets more efficiently.</p>
<p><span style="color: #ff0000;">Note: <strong>Assets.CreateEmptyAsset</strong> is deprecated.</span></p>
<h5><span style="color: #3366ff;">• Adding concept of  IAssetFiles under IAsset. </span></h5>
<p>A new concept is introduced from the GA version. If you want to upload a video file (your <strong>AssetFile</strong>), you associate it with an asset. And upload your <strong>AssetFile</strong> to the portal, Here is the code:</p><pre class="crayon-plain-tag">static public IAsset CreateAssetAndUploadSingleFile(AssetCreationOptions assetCreationOptions, string singleFilePath)
{
     var assetName = "UploadSingleFile_" + DateTime.UtcNow.ToString();
     var asset = mediaContext.Assets.Create(assetName, assetCreationOptions);
     var fileName = Path.GetFileName(singleFilePath);

     var assetFile = asset.AssetFiles.Create(fileName);
     assetFile.Upload(singleFilePath);
     Console.WriteLine("Done uploading of {0} using Upload()", assetFile.Name);

     return asset;
}</pre><p><strong>singleFilePath</strong> is where you put your files in.</p>
<p>Here is the whole process for getting your asset usable for a job (<strong>Credit to</strong> <a href="https://twitter.com/GeorgeTrifonov">George Trifonov</a>):</p>
<ol>
<li>Create asset</li>
<li>Create file object(s) associated with asset</li>
<li>Create assess policy and locator so you can upload files from local filesystem in next step</li>
<li>Upload files from local disk to corresponding asset files objects</li>
<li>Select which file will a <strong><span style="color: #ff0000;">primary file</span></strong> within an asset</li>
</ol>
<p><strong><span style="line-height: 18px;">Code sample:</span></strong></p><pre class="crayon-plain-tag">var asset = datacontext.Assets.Create(Guid.NewGuid().ToString(), options);
var policy = datacontext.AccessPolicies.Create("Write", TimeSpan.FromMinutes(5), AccessPermissions.Write);
var locator = datacontext.Locators.CreateSasLocator(asset, policy);
FileInfo info = new FileInfo(filePath);
var file = asset.AssetFiles.Create(info.Name);
file.UploadAsync(filePath, new BlobTransferClient()
{
    NumberOfConcurrentTransfers = 5,
    ParallelTransferThreadCount = 5
}, locator, CancellationToken.None).Wait();

file.IsPrimary = true;
file.Update();</pre><p><span style="font-size: 17px; color: #3366ff; font-family: Georgia, 'Times New Roman', Helvetica, Arial, sans-serif; line-height: 24px;">2. MediaProcessor Naming change</span></p>
<p>There are naming string changes when you query Media Processor. In the old API, if you want to query &#8220;<strong>MP4 to Smooth Streams Task</strong>&#8221; media processor, you are probably doing this:</p><pre class="crayon-plain-tag">var theProcessor = from p in mediaContext.MediaProcessors
                    where p.Name == "MP4 to Smooth Streams Task"
                    select p;

IMediaProcessor processor = theProcessor.First();</pre><p>But in the current APIs, this won&#8217;t work cause &#8220;MP4 to Smooth Streams Task&#8221; is no longer valid. You could query by following name and ID identifiers.</p>
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="240" height="20"><strong>Media Processor</strong></td>
<td width="60"><strong>Version</strong></td>
<td width="340"><strong>GUID</strong></td>
</tr>
<tr>
<td height="20">Storage Decryption</td>
<td>1.5.3</td>
<td>aec03716-7c5e-4f68-b592-f4850eba9f10</td>
</tr>
<tr>
<td height="20"><a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj129582.aspx">Windows Azure Media Encoder</a></td>
<td>2.2.0.0</td>
<td>70bdc2c3-ebf4-42a9-8542-5afc1e55d217</td>
</tr>
<tr>
<td height="20"><a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh973635.aspx">Windows Azure Media Packager</a></td>
<td>2.2.0.0</td>
<td>a2f9afe9-7146-4882-a5f7-da4a85e06a93</td>
</tr>
<tr>
<td height="20"><a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh973610.aspx">Windows Azure Media Encryptor</a></td>
<td>2.2.0.0</td>
<td>38a620d8-b8dc-4e39-bb2e-7d589587232b</td>
</tr>
</tbody>
</table>
<p><em>* We also add in more Task Preset and you could click on different Media Processor name above to check out more information on MSDN.</em></p>
<p><span style="font-size: 14px;">Here is the code if you want to &#8220;</span><strong style="font-size: 14px;">Convert Mp4 into Smooth Streaming</strong><span style="font-size: 14px;">&#8220;:</span></p><pre class="crayon-plain-tag">IJob job = mediaContext.Jobs.Create("My MP4 to Smooth job");

IMediaProcessor processor = mediaContext.MediaProcessors.Where(p =&gt; p.Name == "Windows Azure Media Packager").ToList().OrderBy(p =&gt; new Version(p.Version)).LastOrDefault();

string configuration = File.ReadAllText(configFilePath);

ITask task = job.Tasks.AddNew("My Mp4 to Smooth Task",
processor,
configuration,
Microsoft.WindowsAzure.MediaServices.Client.TaskOptions.None);</pre><p></p>
<h5><span style="color: #3366ff;">3. Upload/download progress for asset </span></h5>
<p><strong>Assets</strong> don’t deal with uploading/downloading; only <strong>IAssetFiles</strong> do. If you are tracking the uploading/downloading progress of your video asset, you were using the following in old APIs:</p><pre class="crayon-plain-tag">mediaContext.Assets.OnUploadProgress</pre><p>And you should change to the following:</p><pre class="crayon-plain-tag">assetFile.UploadProgressChanged
assetFile.DownloadProgressChanged</pre><p></p>
<h5><span style="color: #3366ff;">4. Using Windows Azure portal to diagnostic your problem</span></h5>
<p>Since a few weeks ago, our Media Services on Windows Azure portal added a Job tab. And that&#8217;s where you could have a more detailed view of your job running progress. Meanwhile, you could also report to use the nid to let us help you find out the prob (by posting on our forum is the best way to reach out to us).</p>
<div id="attachment_1538" class="wp-caption aligncenter" style="width: 567px"><img class=" wp-image-1538 " title="Job progress for Windows Azure Media Services" src="http://mingfeiy.com/wp-content/uploads/2013/01/Job-Debug.png" alt="" width="557" height="273" />
<p class="wp-caption-text">Job Progress Tab for Windows Azure Media Services</p>
</div>
<p>Lastly, please always refer to our updated <a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh973620.aspx">MSDN documentation</a>. You could find complete working sample with current SDKs. Good luck!</p>
<p><span style="color: #ff0000;">Update: you could find out more information here <a href="http://social.msdn.microsoft.com/Forums/en-US/MediaServices/thread/7417b76a-d670-4b2c-8024-0e1c2ce4b803">[MSDN forum link]</a>. </span></p>
<h4><span style="color: #3366ff;">Changes since November 2012 (2.0.0.0) release</span></h4>
<p style="font-size: 14px;"><strong>SDK Changes: </strong><span style="font-size: 14px;">The following changes describe fixes that are included in the December 2012 (Version 2.0.1.0) SDK.</span></p>
<p><strong><span style="color: #3366ff;">Assets</span></strong></p>
<ul style="line-height: 18px;">
<li><strong>• IAsset.Locators.Count </strong>: This count is now correctly reported on new IAsset interfaces after all locators have been deleted.</li>
</ul>
<p><strong><span style="color: #3366ff;">IAssetFile</span></strong></p>
<ul style="line-height: 18px;">
<li><strong>• IAssetFile.ContentFileSize </strong>: This value is now properly set after an upload by IAssetFile.Upload(filepath).</li>
<li><strong>• IAssetFile.ContentFileSize </strong>: This property can now be set when creating an asset file. It was previously read-only.</li>
<li><strong>• IAssetFile.Upload(filepath) </strong>: Fixed an issue where this synchronous upload method was throwing the following error when uploading multiple files to the asset. The error was &#8220;Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.&#8221;</li>
<li><strong>• IAssetFile.UploadAsync() </strong>: Fixed an issue where no more than 5 files could be uploaded simultaneously.</li>
<li><strong>• IAssetFile.UploadProgressChanged </strong>: This event is now provided by the SDK.</li>
<li><strong>• IAssetFile.DownloadAsync(string, BlobTransferClient, ILocator, CancellationToken)</strong>: This overload is now provided.</li>
<li><strong>• IAssetFile.DownloadAsync </strong>: Fixed an issue where no more that 5 files could be downloaded simultaneously.</li>
<li><strong>• IAssetFile.Delete </strong>: Fixed an issue where calling delete may throw an exception if no file was uploaded for the IAssetFile.</li>
</ul>
<p><strong><span style="color: #3366ff;">Jobs</span></strong></p>
<ul style="line-height: 18px;">
<li><strong>Jobs </strong>: Fixed an issue where chaining a &#8220;MP4 to Smooth Streams task&#8221; with a &#8220;PlayReady Protection Task&#8221; using a job template would not create any tasks at all.</li>
</ul>
<p><strong><span style="color: #3366ff;">Utility Classes</span></strong></p>
<ul style="line-height: 18px;">
<li><strong>• EncryptionUtils.GetCertificateFromStore() </strong>: This method no longer throws a null reference exception due to a failures finding the certificate based on certificate configuration issues.</li>
</ul>
<p><strong><span style="color: #3366ff;">General SDK Updates</span></strong></p>
<ul style="line-height: 18px;">
<li><strong>• Intellisense </strong>: Added missing Intellisense documentation for many types.</li>
<li><strong>• Microsoft.Practices.TransientFaultHandling.Core </strong>: Fixed an issue where the SDK still had a dependancy to an old version of this assembly.</li>
</ul>
<h4><span style="color: #3366ff;">Changes since June 2012 release</span></h4>
<p style="font-size: 14px;"><strong><span style="color: #3366ff;">SDK Changes</span></strong></p>
<p style="font-size: 14px;">The following changes require any code written against the June 2012 Preview release to be modified:</p>
<p style="font-size: 14px;"><strong><span style="color: #3366ff;">Assets</span></strong></p>
<p style="font-size: 14px;">IAsset.Create(assetName) is the ONLY asset creation function.  IAsset.Create no longer uploads files as part of the method call.</p>
<p style="font-size: 14px;">The IAsset.Publish method and the AssetState.Publish enumeration value have been removed from the Services SDK.  Any code that relies on this value must be re-written.</p>
<p style="font-size: 14px;"><strong><span style="color: #3366ff;">FileInfo</span></strong></p>
<p style="font-size: 14px;">This class has been removed and replaced by IAssetFile.  See below.</p>
<p style="font-size: 14px;"><strong><span style="color: #3366ff;">IAssetFiles</span></strong></p>
<p style="font-size: 14px;">Replaces FileInfo and has a different behavior. To use it, instantiate the IAssetFiles object, followed by a file upload either using the Media Services SDK or the Windows Azure Storage SDK. The following IAssetFile.Upload overloads can be used:</p>
<ul style="line-height: 18px;">
<li>       <strong>IAssetFile.Upload(filePath)</strong>.  Synchronous method.  Blocks the thread and is recommended only when uploading a single file.</li>
<li>      <strong> IAssetFile.UploadAsync(filePath, blobTransferClient, locator, cancellationToken)</strong>.  Asynchronous method.  This is the preferred upload mechanism. Known bug: using the cancellationToken will indeed cancel the upload; however, the cancellation state of the tasks can be any of a number of states. You must properly catch and handle exceptions.</li>
</ul>
<p style="font-size: 14px;"><strong><span style="color: #3366ff;">Locators</span></strong></p>
<p style="font-size: 14px;"><strong></strong><span style="font-size: 14px;">The Origin-specific and Windows Azure CDN-specific versions have been removed. The SAS-specific context.Locators.CreateSasLocator(asset, accessPolicy) will be marked deprecated, or removed by GA. See the Locators section under New Functionality for updated behavior.</span></p>
<p style="font-size: 14px;"><strong><span style="color: #3366ff;">New Functionality</span></strong></p>
<p style="font-size: 14px;">The following functionality is new in the November 2012 (2.0.0.0) release.</p>
<p style="font-size: 14px;"><strong><span style="color: #3366ff;">Deleting entities</span></strong></p>
<p style="font-size: 14px;">IAsset, IAssetFile, ILocator, IAccessPolicy, IContentKey objects are now deleted at the object level, i.e. IObject.Delete(), instead of requiring a delete in the Collection, that is cloudMediaContext.ObjCollection.Delete(objInstance).</p>
<p style="font-size: 14px;"><strong><span style="color: #3366ff;">Locators</span></strong></p>
<p style="font-size: 14px;">Locators must now be created using the CreateLocator method and use the LocatorType.SAS or LocatorType.OnDemandOrigin enum values as an argument for the specific type of locator you want to create.</p>
<p style="font-size: 14px;">New properties were added to Locators to make it easier to obtain usable URIs for your content. This redesign of Locators was meant to provide more flexibility for future third-party extensibility and increase ease-of-use for media client applications.</p>
<p style="font-size: 14px;"><strong><span style="color: #3366ff;">Asynchronous Method Support</span></strong></p>
<p style="font-size: 14px;">Asynchronous support has been added to all methods.</p>
<p>The post <a href="http://mingfeiy.com/breaking-changes-for-windows-azure-media-services-ga/">Breaking changes for Windows Azure Media Services .NET SDK GA</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/breaking-changes-for-windows-azure-media-services-ga/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Client Ecosystem for Windows Azure Media Services</title>
		<link>http://mingfeiy.com/client-ecosystem-for-windows-azure-media-services/</link>
		<comments>http://mingfeiy.com/client-ecosystem-for-windows-azure-media-services/#comments</comments>
		<pubDate>Tue, 15 Jan 2013 02:25:43 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Media]]></category>
		<category><![CDATA[Media Services]]></category>
		<category><![CDATA[Video Streaming]]></category>
		<category><![CDATA[Windows 8]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1393</guid>
		<description><![CDATA[<p>This blog gives an overview of what kind of client support Microsoft offers as part of Windows Azure media Services. On one side, you could create, manage, package and deliver media asset through Windows Azure media services. Many popular streaming formats are supported, such as Smooth Streaming, Http Llive Streaming and MPEG-dash. On the other [...]</p><p>The post <a href="http://mingfeiy.com/client-ecosystem-for-windows-azure-media-services/">Client Ecosystem for Windows Azure Media Services</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>This blog gives an overview of what kind of client support Microsoft offers as part of <a href="http://www.windowsazure.com/en-us/home/features/media-services/">Windows Azure media Services</a>. On one side, you could create, manage, package and deliver media asset through Windows Azure media services. Many popular streaming formats are supported, such as <a href="http://en.wikipedia.org/wiki/Adaptive_bitrate_streaming#Microsoft_Smooth_Streaming">Smooth Streaming</a>,<a href="http://en.wikipedia.org/wiki/HTTP_Live_Streaming"> Http Llive Streaming</a> and <a href="http://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP">MPEG-dash</a>. On the other hand, we provide various SDKs and frameworks for you to consume media asset by building rich media applications rapidly on many platforms, such as PC, XBox, mobile and etc.</p>
<h4>VIDEO DELIVERY THROUGH BROWSER</h4>
<p>Today, though people started to watch videos on different devices, video streaming on desktop through browser is the most popular way for video delivery. Most businesses built rich media applications with plugin such as Silverlight or Flash. For instance, Netflix web version is built using Silverlight and Hulu web version is using Flash. This plugin approach works fine for majority of operating systems and browsers. <span id="more-1393"></span></p>
<p>However, if you want to target browser (IE) on Windows 8, things get a bit tricky. IE10 on Windows 8 desktop mode supports Silverlight and Flash. However, Silverlight doesn&#8217;t get supported on WINRT version of Windows 8. And for Metro Mode IE, only HTML5 and white-listed Flash site gets supported. Clearly, plugin is going away on tablet devices.</p>
<p>You may have questions at this point. <strong>&#8220;So how about using HTML5 to deliver content through modern browser?&#8221;</strong></p>
<p>HTML5 only supports progressive download for most of browsers. If you want to implement Adaptive Streaming (e.g. Smooth Streaming), most of browser &lt;video&gt; doesn&#8217;t support. The only browser that supports Http Live Streaming is Safari on iOS (MAC or i-Devices). But this is just a propitiatory solution from Apple. Therefore, if you want to use Adaptive Streaming, which enables content protection and live, you would need to work with something else rather than HTML5. Lastly, don&#8217;t forget, only 2/3 of browsers support &lt;video&gt;. There are still users using IE 6/7/8 that won&#8217;t be able to watch your progressive content.</p>
<h5><strong>We provide the following SDK and framework as solution:</strong></h5>
<ul>
<li>• <a href="http://www.iis.net/download/smoothclient">Smooth Streaming Client SDK 2.0</a></li>
<li>• <a href="http://smf.codeplex.com/">[Recommend] Microsoft Media Platform: Player Framework (MMPPF) for Silverlight</a></li>
<li>• <a href="http://playerframework.codeplex.com/wikipage?title=HTML5%20Player&amp;referringTitle=Documentation">HTML5 (browser) Player Framework</a></li>
<li>• <a href="http://www.microsoft.com/en-us/download/details.aspx?id=36057">Microsoft Smooth Streaming Plugin for OSMF (Smooth Streaming for Flash)</a></li>
</ul>
<p>Microsoft&#8217;s open source media player framework &#8211; a component of the Microsoft Media Platform. It built on top of Smooth Streaming Client SDK (<a href="http://www.iis.net/downloads/microsoft/smooth-streaming-client-sdk">download link</a>), enables developers to quickly deploy a robust, scalable, customizable media player for Smooth Streaming delivery. All the features supported by Client SDK are piped through MMPPF. However, with MMPPF you could enjoy some high level features, such as advertisement support (<a href="http://www.iab.net/vast">VAST</a>, <a href="http://www.iab.net/vpaid">VPAID</a>, <a href="http://www.iab.net/vpaid">VMAP</a>) and UI control built in. MMPPF for Silverlight is quite well-establish and used by many major events, such as Beijing and Vancouver Olympics, Sunday Night Football on NBCSports, France Télévisions and etc.</p>
<p><em>Which one should I use?</em><br />
We always recommend to use MMPPF – the player framework. It has player control built up for you and you could customize it upon your need. Smooth Streaming Client SDK is underneath Player framework. If you want to build a player from scratch, you could use Smooth Streaming Client SDK with higher flexibility, but of course a lot of more development efforts.</p>
<p>If you just need to deliver a simple video experience (progressive playback), you could use HTML5 (browser) player framework. We also provide a fall back experience: HTML5 video is configured the primary experience, Silverlight is configured as the next fallback, and a list of hyperlinks to the media is declared as the last fallback. You could check out a <a href="http://smf.cloudapp.net/html5/html/advancedfallbacks.html">advanced fallback demo</a> here.</p>
<h5><a href="http://www.microsoft.com/en-us/download/details.aspx?id=36057">Microsoft Smooth Streaming Plugin for OSMF</a> (Smooth Streaming for Flash)</h5>
<p>Download: <a href="http://www.microsoft.com/en-us/download/details.aspx?id=36057">http://www.microsoft.com/en-us/download/details.aspx?id=36057</a></p>
<p>Our team just realized a preview version of <a href="http://www.microsoft.com/en-us/download/details.aspx?id=36057">Microsoft Smooth Streaming Plugin for OSMF</a>. Using it, you can add Smooth Streaming capabilities to existing <a href="http://osmf.org/">Open Source Media Framework (OSMF)</a> and <a href="http://www.osmf.org/strobe_mediaplayback.html">Strobe Media Playback players</a>.</p>
<p>This version of Smooth Streaming plugin includes the following capabilities and works with OSMF 2.0 APIs:</p>
<ul>
<li>• On-demand Smooth Streaming playback (Play, Pause, Seek, Stop)</li>
<li>• Support for video codecs – H.264</li>
<li>• Support for Audio codecs – AAC</li>
<li>• Multiple audio language switching with OSMF built-in APIs</li>
<li>• Max playback quality selection with OSMF built-in APIs</li>
<li>You could read the announcement <a href="http://blogs.iis.net/cenkd/archive/2012/12/19/announcing-smooth-streaming-plugin-for-osmf.aspx">blog post</a> and <a href="http://www.streamingmedia.com/Articles/News/Online-Video-News/Two-Worlds-Collide-Smooth-Streaming-Meets-Flash-Player-86841.aspx" target="_blank">Two Worlds Collide: Smooth Streaming Meets Flash Player</a> by Streaming Media.</li>
</ul>
<div id="attachment_1506" class="wp-caption aligncenter" style="width: 434px"><img class="size-full wp-image-1506" title="PrintScreen of OSMF Plugin" alt="" src="http://mingfeiy.com/wp-content/uploads/2013/01/OSMF.jpg" width="424" height="265" />
<p class="wp-caption-text">Printscreen of Smooth Streaming OSMF plugin for strobe player</p>
</div>
<h4></h4>
<h4>VIDEO DELIVERY FOR IOS DEVICES</h4>
<p>We provide two different framework for delivering adaptive streaming content onto iOS devices.</p>
<ul>
<li>• <a href="https://github.com/WindowsAzure/azure-media-player-framework">iOS azure media player framework &#8211; HLS support</a></li>
<li>• iOS porting kit for Smooth Streaming w/ PlayReady</li>
</ul>
<h5>iOS azure media player framework &#8211; Open Source</h5>
<p><strong>Github</strong>: <a href="https://github.com/WindowsAzure/azure-media-player-framework">https://github.com/WindowsAzure/azure-media-player-framework</a></p>
<p>Here is a short introduction of this media player framework:<br />
<iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Series/Windows-Azure-Media-Services-Tutorials/An-introduction-to-Azure-Media-Player-Framework-for-IOS/player?w=512&#038;h=288" frameBorder="0" scrolling="no" ></iframe></p>
<p><em>What’s this framework for?</em></p>
<p>This framework enables developers to build native video application on iOS platform, which could consume secure HLS (<a href="http://en.wikipedia.org/wiki/HTTP_Live_Streaming">Http live Streaming</a>) content from Windows Azure Media Services. Mainly,this framework made easy for developers to integrate client-side advertisements. In the future we will also support various advertisement standards, such as <a href="http://www.iab.net/vast">VAST 3.0</a> and <a href="http://www.iab.net/vmap">VMAP 1.0</a>.</p>
<p>I have very detailed write up about this framework in another blog, please read &#8220;<a href="http://mingfeiy.com/announcing-windows-azure-media-player-framework-preview-for-ios/">Announcing Windows Azure Media Player Framework Preview for iOS</a>&#8220; if you are interested.</p>
<div id="attachment_1455" class="wp-caption aligncenter" style="width: 548px"><img class=" wp-image-1455  " title="Printscreen for Azure Media Player framework for IOS" alt="" src="http://mingfeiy.com/wp-content/uploads/2012/12/screencat.png" width="538" height="419" />
<p class="wp-caption-text">Printscreen for Azure Media Player framework for IOS</p>
</div>
<h5>iOS porting kit for Smooth Streaming</h5>
<p>As I will introduce in the next section (<em>Video delivery for any devices</em>), we developed a porting kit for playing back Smooth Streaming onto any device. Since iOS devices are popular, we further implement this porting kit for iOS system. Therefore, for anyone who uses this porting kit, you will need to pay for Final Product License. Please email sspkinfo@microsoft.com for accessing the porting kit.<br />
Note: according to Apple&#8217;s HLS <a href="http://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html">guidence</a>,</p>
<blockquote><p>If your app delivers video over cellular networks, and the video exceeds either 10 minutes duration or 5 MB of data in a five minute period, you are required to use HTTP Live Streaming. (Progressive download may be used for smaller clips.).</p>
</blockquote>
<p>Hence, we came out with another framework for you to build application that consume HLS with advertisement.</p>
<h4></h4>
<h4>VIDEO DELIVERY FOR ANY DEVICES</h4>
<p>- <a href="http://www.microsoft.com/en-us/mediaplatform/sspk.aspx">[Recommend] Smooth Streaming Porting Kit </a></p>
<p>We can&#8217;t possibly implement Smooth Streaming Client for any devices. Thus, we abstract Smooth Streaming Specific aspects (Container parsing, heuristics and etc) as Smooth Streaming porting kit. And we add a few interfaces to &#8220;communicate&#8221; with a specific device. Below is the architecture of Smooth Streaming Porting Kit:</p>
<div id="attachment_1398" class="wp-caption aligncenter" style="width: 446px"><img class=" wp-image-1398 " title="Smooth Streaming Porting Kit " alt="" src="http://mingfeiy.com/wp-content/uploads/2012/12/Untitled-picture.png" width="436" height="342" />
<p class="wp-caption-text">Smooth Streaming Porting Kit</p>
</div>
<p>As showed in the diagram above, there are four interfaces here:</p>
<p>• Hardware Abstraction Layer (HAL): Programming interfaces for interaction with hardware A/V decoders (decoding, rendering). If Roku implements this, it will need to write HAL in their own language for communicating to its hardware layer to decode and render video. And then Roku hooks HAL up with porting kit through HAL interface.</p>
<p>• Platform Abstraction Layer (PAL): Programming interfaces for interaction with the operating system (threads, sockets). Similarly, Roku would need to implement PAL in their language for talking to its specific operating system (Linux in this case). And Roku hooks PAL up through PAL interface.</p>
<ul>
<li>• DRM Interface: we provide DRM interface that you could write code to hook up with any DRM solution. For instance, Microsoft PlayReady team ships <a href="http://www.microsoft.com/playready/licensing/">porting kit</a> for any device. If you want to use PlayReady content protection, you will then write code to &#8220;glue&#8221; our DRM interface with your implementation of PlayReady porting kit.</li>
<li>• Application Interface: you could build your application on top of Application Interface. If you pass media source in Smooth Streaming format, your device will be able to understand and your application will contain heuristics.</li>
<li><em>Is this FREE? </em></li>
<li>The answer is no. This porting kit is the only client SDK we provide that has a license fee. And there are two types of licenses involved.</li>
<li><em>Interim Product License (IPL)</em>: who ports the kit pays this IPL with $50,000 one time fee. For example, if Samsung TV wants to enable Smooth Streaming on his own platform and Samsung hired a 3rd-party company to do it. The 3rd party company needs to pay for IPL. After that the 3rd party company has the rights to resell it to other companies as well for its solution.</li>
<li><em>Final Product License (FPL)</em>: who ships the final product pays. It is based on a royalty model. For the first 10,000 units, there are no fee paid. For units shipped above 10,000, each device pays $0.1 and the total amount is caped at $50,000 a year. In this case, if Samsung TV at the end releases an app based on the porting kit he hired a 3rd-party to implement, Samsung pays for the FPL.</li>
</ul>
<p>For more information, you could check on our portal: <a href="aka.ms/sspk">aka.ms/sspk</a>. And please email sspkinfo@microsoft.com for inquiries.</p>
<h4>VIDEO DELIVERY TO WINDOWS 8 PLATFORM</h4>
<p>There are three ways of delivering video on Windows 8:</p>
<ul>
<li>• Building a video application on Windows 8 (distributed through Windows Store)</li>
<li>• Via Metro IE</li>
<li>• Via Desktop IE</li>
</ul>
<h5>Building a video application on Windows 8 (distributed through Windows Store)</h5>
<ul>
<li>• <a href="http://visualstudiogallery.msdn.microsoft.com/04423d13-3b3e-4741-a01c-1ae29e84fea6">Smooth Streaming Client SDK for Windows 8</a></li>
<li>• <a href="http://playerframework.codeplex.com/">[Recommend] Microsoft Media Platform Player framework</a></li>
</ul>
<p>We provided both SDK and player framework for you to choose from. By using either of them, you could be able to build a rich media application rapidly. <a href="http://blog.hulu.com/2012/10/22/hulu-plus-gets-the-windows-8-treatment/">Hulu Plus hits Windows Store</a> a few days ago, which is built on top of our SDK. The video playback is very smooth and seeking is very fast as well. I do enjoy the Pin-to-Start functionality so I could jump into my favorite show right away. The most attractive feature I found is being able to “Snap View” my video in a small windows and use other application side-by-side.<br />
To understand more about building application on &#8211; &lt;<a href="http://mingfeiy.com/building-video-application-on-windows-8-all-you-need-to-know/">building video applications on WIndows 8 &#8211; things you need to know</a>&gt;.</p>
<div id="attachment_1351" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-1351" title="Snap View Hulu" alt="" src="http://mingfeiy.com/wp-content/uploads/2012/10/07_snap_view_resized2.jpg" width="600" height="337" />
<p class="wp-caption-text">Snap View function for Hulu on Windows 8</p>
</div>
<p>As I mentioned earlier on, you could also deliver video through Metro IE/desktop IE, but there are limitations on the plugin usage. Please refer to &#8220;Video delivery through browser&#8221; section.</p>
<h4>VIDEO DELIVERY TO XBOX</h4>
<p>We bring smooth streaming playback and PlayReady protection capability for premium content onto XBOX platform. Similarly w e have Smooth Streaming SDK and Player Framework wrapped around it. And importantly, Xbox SDK and framework are shipped within XBox ADK (Application Development Kit).</p>
<p><strong>Get started through:</strong> <a href="http://xbox.create.msdn.com/">http://</a><a href="http://xbox.create.msdn.com/">xbox.create.msdn.com</a></p>
<p>There are many applications already in the marketplace such as Comcast, Sony, HBO and etc. We also shipped a reference application with Metro look and feel, which demos how to build a Xbox application to consume Smooth Streaming with or without PlayReady, how to monetize applications with in-built Ad support and rich analytic and how to integrate with XBox Live.</p>
<h4>VIDEO DELIVERY TO WINDOWS PHONE 8/7</h4>
<p>The IIS Smooth Streaming Client (Silverlight) for desktop I introduced in earlier section has a separate version for Windows Phone as well. And on top of the SDK, we always recommend you to use Player Framework：</p>
<p>• <a href="http://playerframework.codeplex.com/releases/view/98528">Player Framework for Windows phone 8 </a></p>
<p>This is a brand new version of the Player Framework for Windows Phone, available exclusively for <strong>Windows Phone 8</strong>, and now based upon the Player Framework for Windows 8. While this new version is not backward compatible with Windows Phone 7 (get that <a href="http://here/">http://smf.codeplex.com/releases/view/88970</a>), it does offer the same great feature set plus dozens of new features such as advertising, localization support, and improved skinning. Find out more about Windows Phone 8 player framework features <a href="http://playerframework.codeplex.com/wikipage?title=Windows%20Phone%208%20Player%20Documentation&amp;referringTitle=Documentation">here</a>.</p>
<div id="attachment_1558" class="wp-caption aligncenter" style="width: 458px"><img class=" wp-image-1558 " title="Windows Phone 8 Video Screen" alt="" src="http://mingfeiy.com/wp-content/uploads/2013/01/wp8.png" width="448" height="269" />
<p class="wp-caption-text">PrintScreen of Windows Phone 8 media player framework</p>
</div>
<h4>Summary</h4>
<p>If you have any questions related to the usage of SDK or framework, please post on our <a href="http://social.msdn.microsoft.com/Forums/en-US/MediaServices/threads">Media Services Forum</a>. I also have a slide deck posted on Slideshare and you could get more information there as well.<br />
<iframe width="427" height="356" style="border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px;" src="http://www.slideshare.net/slideshow/embed_code/15472570" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="" webkitallowfullscreen="" mozallowfullscreen=""></iframe></p>
<div style="margin-bottom: 5px;"><strong> <a title="Client ecosystem for Windows Azure Media Services" href="http://www.slideshare.net/mingfeiy/client-ecosystem-for-wams" target="_blank">Client ecosystem for Windows Azure Media Services</a> </strong> from <strong><a href="http://www.slideshare.net/mingfeiy" target="_blank">Mingfei Yan</a></strong></div>
<p>The post <a href="http://mingfeiy.com/client-ecosystem-for-windows-azure-media-services/">Client Ecosystem for Windows Azure Media Services</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/client-ecosystem-for-windows-azure-media-services/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>How to generate Http Live Streaming (HLS) content using Windows Azure Media Services</title>
		<link>http://mingfeiy.com/how-to-generate-http-live-streaming-hls-content-using-windows-azure-media-services/</link>
		<comments>http://mingfeiy.com/how-to-generate-http-live-streaming-hls-content-using-windows-azure-media-services/#comments</comments>
		<pubDate>Fri, 14 Dec 2012 02:06:45 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Code blocks]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1442</guid>
		<description><![CDATA[<p>If you want to deliver video content to iOS devices and platform, the best option you have is to package your content into Http Live Streaming. HLS is Apple&#8217;s implementation of adaptive streaming and here is some useful resources from Apple. Apple implements the format but they don&#8217;t provide hosting. You could use Apache server [...]</p><p>The post <a href="http://mingfeiy.com/how-to-generate-http-live-streaming-hls-content-using-windows-azure-media-services/">How to generate Http Live Streaming (HLS) content using Windows Azure Media Services</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>If you want to deliver video content to iOS devices and platform, the best option you have is to package your content into <a href="http://en.wikipedia.org/wiki/HTTP_Live_Streaming">Http Live Streaming</a>. HLS is Apple&#8217;s implementation of adaptive streaming and here is some <a href="https://developer.apple.com/resources/http-streaming/">useful resources</a> from Apple. Apple implements the format but they don&#8217;t provide hosting. You could use Apache server for hosting HLS content, but better, you could choose Windows Azure Media Services &#8211; a way to host video in the cloud. Therefore, you don&#8217;t need to manage infrastructure and worry about scalability: Azure takes care of all that for you.</p>
<h6><span style="color: #3366ff;">Scenario One: You have a .Mp4 file and you want to package into HLS and stream out from Windows Azure Media Services.</span></h6>
<p>Here is how you could do it through <span style="color: #3366ff;">Windows Azure Management Portal</span>:<span id="more-1442"></span></p>
<p>1. Login to <a href="https://manage.windowsazure.com/">https://manage.windowsazure.com/</a> and if you don&#8217;t have a media services account yet, here is <a href="http://mingfeiy.com/getting-started-windows-azure-media-services/">how you could obtain a preview account</a>.</p>
<p>2. Here is how the portal looks like. Click on <span style="color: #ff6600;">Media Services tab</span> and choose an existing MP4 file you have. If you don&#8217;t have any available MP4 file in portal, you could click on <span style="color: #ff6600;">UPLOAD</span> button at the bottom to upload a file from your laptop. Note: you could only upload file size less than <span style="color: #ff6600;">200MB</span> through Azure portal. If you want to upload file bigger than 200 MB, please use our <a href="https://www.windowsazure.com/en-us/develop/net/how-to-guides/media-services/">Media Services API</a>.</p>
<div id="attachment_1443" class="wp-caption aligncenter" style="width: 569px"><img class=" wp-image-1443  " title="Portal for Media Services" src="http://mingfeiy.com/wp-content/uploads/2012/12/portalUI.png" alt="" width="559" height="309" />
<p class="wp-caption-text">Portal for Media Services</p>
</div>
<p>3. After having your MP4 file in place, click on the Encode button below and choose the third profile: <span style="color: #ff6600;">Playback on IOS devices and PC/MAC</span>. After you hit okay, it will start to produce two files.</p>
<p style="text-align: center;"><img class="aligncenter  wp-image-1446" title="Encode file to HLS" src="http://mingfeiy.com/wp-content/uploads/2012/12/encodetoHLS.png" alt="" width="702" height="254" /></p>
<p style="text-align: left;">4. Now, after you kick off the encoding job, you will see two new assets get generated. For my case, they are<span style="color: #ff6600;"> &#8220;The Surface Movement_small-mp4-iOS-Output&#8221;</span> and <span style="color: #ff6600;">&#8220;The Surface Movement_small-mp4-iOS-Output-Intermediate-PCMac-Output&#8221;</span>. Here, any name with an &#8220;<span style="color: #ff6600;">Intermediate</span>&#8221; is a <span style="color: #ff6600;">SMOOTH STREAMING</span> content and the other one is <span style="color: #ff6600;">HLS content</span>. We firstly package your H.264 content into Smooth Streaming and then we mark it as HLS content.</p>
<blockquote>
<p style="text-align: left;">Question: If I don&#8217;t need Smooth Streaming content, could we delete it?</p>
<p>Answer: Yes, you could. But if you use portal to do the conversion  Smooth Streaming asset will be created.</p>
<p style="text-align: left;">Question: what profile of HLS content do I generate here?</p>
<p>Answer: The profile we used here is &#8220;<span style="color: #ff6600;">H264 Smooth Streaming 720p</span>&#8220;, and you could check out details <a href="http://msdn.microsoft.com/en-us/library/jj129582.aspx">here</a>. If you want to encode into other HLS profile, you will need to use our API. For Azure portal, only one profile is provided.</p>
</blockquote>
<p style="text-align: left;">5. After the packing is done, click on the HLS asset <span style="color: #ff6600;">(without Intermediate in the name)</span> and click on <span style="color: #ff6600;">PUBLISH</span> button at the bottom. Now, your HLS content is hosted on Windows Azure Media Services, and you could grab the link at Publish URL column. That&#8217;s the link you put in your video application (iOS native app or HTML5 web app for Safari) and enjoy your video!</p>
<p style="text-align: center;"><img class="aligncenter  wp-image-1448" title="Publish HLS" src="http://mingfeiy.com/wp-content/uploads/2012/12/publishHLS.png" alt="" width="822" height="174" /></p>
<p style="text-align: left;">6. I will publish another blog post on how to generate HLS content through Azure Media Services .NET SDK.</p>
<p>The post <a href="http://mingfeiy.com/how-to-generate-http-live-streaming-hls-content-using-windows-azure-media-services/">How to generate Http Live Streaming (HLS) content using Windows Azure Media Services</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/how-to-generate-http-live-streaming-hls-content-using-windows-azure-media-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Windows Azure Media Player framework Preview for IOS</title>
		<link>http://mingfeiy.com/announcing-windows-azure-media-player-framework-preview-for-ios/</link>
		<comments>http://mingfeiy.com/announcing-windows-azure-media-player-framework-preview-for-ios/#comments</comments>
		<pubDate>Fri, 14 Dec 2012 01:01:22 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1412</guid>
		<description><![CDATA[<p>I am pleased to announce that Windows Azure Media Services team is releasing a Windows Azure Media Player Framework Preview for iOS. This new framework is released as Open Source through Github: https://github.com/WindowsAzure/azure-media-player-framework and licensed under Apache 2.0. What&#8217;s this framework for? This framework enables developers to build native video application on iOS platform, which could consume [...]</p><p>The post <a href="http://mingfeiy.com/announcing-windows-azure-media-player-framework-preview-for-ios/">Announcing Windows Azure Media Player framework Preview for IOS</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I am pleased to announce that Windows Azure Media Services team is releasing a Windows Azure Media Player Framework Preview for iOS. This new framework is released as Open Source through Github: <a href="https://github.com/WindowsAzure/azure-media-player-framework">https://github.com/WindowsAzure/azure-media-player-framework</a> and licensed under Apache 2.0. </p>
<div id="attachment_1455" class="wp-caption aligncenter" style="width: 624px"><img class=" wp-image-1455 " title="Printscreen for Azure Media Player framework for IOS" src="http://mingfeiy.com/wp-content/uploads/2012/12/screencat.png" alt="" width="614" height="478" />
<p class="wp-caption-text">Printscreen for Azure Media Player framework for IOS</p>
</div>
<h5><span style="color: #ff6600;">What&#8217;s this framework for?</span></h5>
<p>This framework enables developers to build native video application on iOS platform, which could consume secure HLS (<a href="http://en.wikipedia.org/wiki/HTTP_Live_Streaming">Http live Streaming</a>) content from Windows Azure Media Services. Mainly,this framework made easy for developers to integrate client-side advertisements. In the future we will also support various advertisement standards, such as <a href="http://www.iab.net/vast">VAST 3.0</a> and <a href="http://www.iab.net/vmap">VMAP 1.0</a>. <span id="more-1412"></span></p>
<h5><span style="color: #ff6600;">Architecture of this player framework</span></h5>
<div id="attachment_1425" class="wp-caption aligncenter" style="width: 602px"><img class=" wp-image-1425 " title="Architecture - Azure Media Player Framework Preview for iOS " src="http://mingfeiy.com/wp-content/uploads/2012/12/architecture2.png" alt="" width="592" height="239" />
<p class="wp-caption-text">Architecture &#8211; Azure Media Player Framework Preview for iOS</p>
</div>
<h5><span style="color: #3366ff;"><span style="line-height: 21px;">1. </span>JavaScript Library:<span style="line-height: 21px;"> </span></span></h5>
<ul>
<li>
<ul>
<li><span style="line-height: 21px;">• <strong><span style="color: #3366ff;">Sequencer.js</span></strong>: used to maintain an internal playlsit</span></li>
<li><span style="line-height: 21px;">• <strong><span style="color: #3366ff;">Scheduler.js</span></strong>: used to schedule advertisement and main content</span></li>
<li><span style="line-height: 21px;">• <strong><span style="color: #3366ff;">Adresolver.js</span></strong>: used to parse different advertisement standards, currently there is nothing available but we will  be adding VAST a<span style="color: #333333;">nd VMAP support very soon</span></span></li>
</ul>
</li>
<li><em><span style="text-decoration: underline;"><span style="line-height: 21px;"><span style="color: #333333; text-decoration: underline;">Note: </span></span>developers are not advised to change existing JavaScript files but encouraged to write additional JavaScript file as plugin.</span></em></li>
</ul>
<h5><span style="color: #3366ff; line-height: 21px;">2. iOS sequencer wrapper: </span></h5>
<ul>
<li><span style="color: #333333; line-height: 21px;">iOS sequencer wrapper bubbles up most of functions implemented in JavaScript library into Objective C layer. We have a hidden <a href="http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html">UIWebView</a> for calling all JavaScript functions. </span></li>
<li><span style="text-decoration: underline;"><em><span style="color: #333333; line-height: 21px; text-decoration: underline;">Note: Developers are not advised to modify these files and APIs should remain the same even with additional plugins.</span></em></span></li>
<li>
<h5><span style="color: #3366ff; line-height: 21px;">3. iOS AVPlayerFramework:</span></h5>
</li>
<li><span><span><span style="color: #333333;"><span style="line-height: 21px;">As showed in the architecture diagram above, the AVPlayeFramework includes iOS sequencer wrapper and based on <a href="https://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVPlayer_Class/Reference/Reference.html">AVPlayer</a> native iOS library. This AVPlayerFramework provides additional functionalities such as advertisement insertion based on AVPlayer. All APIs in AVplayerFramework are what developer should use directly for developing its video application. </span></span></span></span></li>
<li>
<h5><span style="color: #3366ff;">4. Sample player:</span></h5>
<div>Sample Player is also shipped along with our player framework as a reference for developer. Here you could learn how to use various functions we provided, such as pre-roll, mid-roll and post-roll advertisement insertion. All the video sources are coming from Windows Azure Media Services. (Here is a blog for how-to produce HLS content with Windows Azure Media Services).</div>
</li>
</ul>
<h5><span style="color: #ff6600;">Who should use this SDK?</span></h5>
<p>Developers who want to consume HLS (Http Live Streaming) content from Windows Azure Media Services and Developers who want to enable client-side advertisement insertion with their video application on iOS.</p>
<h5><span style="color: #ff6600;">System requirement</span></h5>
<p>iOS 5 and above system will be supported.</p>
<h5><span style="color: #ff6600;">Feature List </span></h5>
<p><strong>Advertisement insertion</strong></p>
<ul>
<ul>
<li>• Pre-roll, Mid-roll and Post-roll support</li>
<li>• Ad Pod</li>
</ul>
<li>
<ul>
<li>• Advertisement clip could be either Mp4 or Http Live Streaming</li>
</ul>
</li>
<li>
<ul>
<li>• Error Notification</li>
</ul>
</li>
<li>
<ul>
<li>• Play-once or Sticky Ad</li>
</ul>
</li>
<li></li>
</ul>
<p><strong>Performance</strong></p>
<ul>
<ul>
<li>•Seamless transition from Advertisement to Main Content and between advertisements</li>
</ul>
<li>
<h5></h5>
</li>
</ul>
<h5><span style="color: #ff6600;">Q&amp;A:</span></h5>
<h6><span style="color: #3366ff;">Question: how often will you refresh this framework?</span></h6>
<p><strong>Answer:</strong> We will refresh code frequently once we have important features finished. However, we don&#8217;t have rigid deadline such as a specific day of month, but our release cycle will be on monthly-basis. Therefore, do check out Readme often to see new features.</p>
<h6><span style="color: #3366ff;">Question: If my video application is based on MPMovidPlayer, could I still use this framework?</span></h6>
<p><strong>Answer:</strong> Yes. Our IOSAVPlayerFramework is based on AVPlayer. And you could develop another Player Framework on top of IOS Sequencer Wrapper and utilize <a href="http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPMoviePlayerController_Class/Reference/Reference.html">MPMoviePlayer</a>. However, since MPMoviePlayer is Singleton, you won&#8217;t benefit from the seamless switch performance we provided.</p>
<h6><span style="color: #3366ff;">Question: I see you have JavaScript library there, could I build a web-based application on top of your JavaScript library? </span></h6>
<p><strong>Answer:</strong> Yes, you could do that, though HTML5 video framework for browser is something we are planning. You could play with it if you can&#8217;t wait. Just a friendly notice that, if your main content or advertisement is in HLS format, your video could only be played back in Safari on MAC or i-device. For other browser, you will need to have progressive download content (such as H.264 or WebM).</p>
<h6><span style="color: #3366ff;">Question: If I have feature requests, how should I contact you? </span></h6>
<p><strong>Answer: </strong>please go to our feature request <a href="http://iismediaservices.uservoice.com/forums/88965-iis-media-services-feature-suggestions">user voice</a>.</p>
<h6><span style="color: #3366ff;">Question: If I have questions or bugs, how should I contact you? </span></h6>
<p><strong>Answer:</strong></p>
<ul>
<li>1. Read our documentation carefully. We will be publishing on both Github and MSDN.</li>
<li>2. If you can&#8217;t find a clue, please post your question on Windows Azure Stackoverflow with tag Azure: <a href="http://stackoverflow.com/questions/tagged/azure">http://stackoverflow.com/questions/tagged/azure</a>. We will monitor the forum closely.</li>
<li>3. If we aren&#8217;t be able to solve the problem you posted, we will put it into back log and fix it according to how badly it impacts. Meanwhile, if you helped us fix the problem, you could contribute code into out Github repository and here is the guidance: <a href="http://windowsazure.github.com/guidelines.html">http://windowsazure.github.com/guidelines.html</a>.</li>
</ul>
<h5></h5>
<p>The post <a href="http://mingfeiy.com/announcing-windows-azure-media-player-framework-preview-for-ios/">Announcing Windows Azure Media Player framework Preview for IOS</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/announcing-windows-azure-media-player-framework-preview-for-ios/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Azure Media Services Session info for Build 2012</title>
		<link>http://mingfeiy.com/media-services-for-build-2012/</link>
		<comments>http://mingfeiy.com/media-services-for-build-2012/#comments</comments>
		<pubDate>Wed, 31 Oct 2012 21:45:41 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Code blocks]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Media Services]]></category>
		<category><![CDATA[Windows 8]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1366</guid>
		<description><![CDATA[<p>This blog post is for my session 3-035 Building video applications on Windows 8 with Windows Azure Media Services. This session should be over by the time this post available. And I apologize if I failed to squeeze everything into one hour. However, I do hope you enjoyed session and I&#8217;d love to listen to [...]</p><p>The post <a href="http://mingfeiy.com/media-services-for-build-2012/">Windows Azure Media Services Session info for Build 2012</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>This blog post is for my session <a href="http://channel9.msdn.com/Events/Build/2012/3-035">3-035 Building video applications on Windows 8 with Windows Azure Media Services</a>. This session should be over by the time this post available. And I apologize if I failed to squeeze everything into one hour. However, I do hope you enjoyed session and I&#8217;d love to listen to your feedback.</p>
<p>Here is all the materials I promised. <span id="more-1366"></span></p>
<p><iframe width="427" height="356" style="border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px;" src="http://www.slideshare.net/slideshow/embed_code/14961892" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen=""></iframe></p>
<div style="margin-bottom: 5px;"><strong> <a title="Building video applications on Windows 8 with Windows Azure Media Services" href="http://www.slideshare.net/mingfeiy/building-video-applications-on-windows-8-with-windows-azure-media-services" target="_blank">Building video applications on Windows 8 with Windows Azure Media Services</a> </strong> from <strong><a href="http://www.slideshare.net/mingfeiy" target="_blank">Mingfei Yan</a></strong></div>
<div style="margin-bottom: 5px;"><strong>Demo 1: Sign up services through Windows Azure portal and experience some of services built on top of Media Services SDK</strong></div>
<div style="margin-bottom: 5px;">Tutorial: <a href="http://mingfeiy.com/getting-started-windows-azure-media-services/">Getting started with Media Services<br />
</a></div>
<p>&nbsp;</p>
<div style="margin-bottom: 5px;"><strong>Demo 2: Convert .Mp4 into Smooth Streaming and streaming it! <a href="http://mingfeiy.com/wp-content/uploads/2012/10/BuildEncodeVideo.zip">Source code download</a>. </strong></div>
<div style="margin-bottom: 5px;"><em><span style="color: #993366;">(Remember to replace the accKey and accName inside the file.)</span></em></div>
<div style="margin-bottom: 5px;">Detail explanation through my other <a href="http://mingfeiy.com/hello-windows-azure-media-services/">blog</a> and <a href="https://vimeo.com/46275436">video</a>.</div>
<p>&nbsp;</p>
<div style="margin-bottom: 5px;"><strong>Demo 3: Building Video Application by using Media Player Framework </strong></div>
<div style="margin-bottom: 5px;">
<ul>
<ul>
<li>Part 1: Advertising support for Media Player framework on Windows 8 (<a href="http://mingfeiy.com/advertising-support-media-player-framework-windows-8/">Link</a>)</li>
<li>Part 2: DEMO VAST advertisement support for Media Player Framework on Windows 8 <a href="http://mingfeiy.com/wp-content/uploads/2012/10/demo_vast.zip">(Source Code download</a>)</li>
<li>Part 3: Microsoft Media Platform Player Framework for windows 8 – closed caption support (<a href="http://mingfeiy.com/microsoft-media-platform-player-framework-windows-8-closed-caption-support/">link</a>)<br />
<strong><br />
</strong></li>
</ul>
</ul>
<p>&nbsp;</p>
<ul>
<li><strong>Additional Reading:</strong></li>
</ul>
</div>
<div style="margin-bottom: 5px;">
<ul>
<li>• Building video application on Windows 8 – things you want to know (<a href="http://mingfeiy.com/building-video-application-on-windows-8-all-you-need-to-know/">Link</a>)</li>
<li>• Adding VMAP support for Windows 8 video app using Microsoft Media Platform Player Framework (<a href="http://mingfeiy.com/add-vmap-support-windows-8-video-app-using-microsoft-media-platform-player-framework/">link</a>)</li>
</ul>
</div>
<p>&nbsp;</p>
<div style="margin-bottom: 5px;">Meanwhile, as I mentioned, I don&#8217;t have time to explain why Adaptive Streaming is the future, but you could check out some explanation through my blog:</div>
<div style="margin-bottom: 5px;">
<ul>
<li>• How does video streaming work? [<a href="http://mingfeiy.com/progressive-download-video-streaming/">part 1: Progressive Download</a>]</li>
<li>• How does video streaming work? [<a href="http://mingfeiy.com/traditional-streaming-video-streaming/">part 2: Traditional Streaming</a>]</li>
<li>• How does video streaming work? [<a href="http://mingfeiy.com/adaptive-streaming-video-streaming/">part 3: HTTP-based Adaptive Streaming</a>]</li>
</ul>
</div>
<p>&nbsp;</p>
<div style="margin-bottom: 5px;">If you have any questions, feel free to email me (yanmf at microsoft.com) or ping me on twitter (<a href="https://twitter.com/mingfeiy">@mingfeiy</a>)! Enjoy #Build!</div>
<div style="margin-bottom: 5px;">Update: you could catch the session on Channel 9 now:</div>
<div style="margin-bottom: 5px;"><video poster="http://video.ch9.ms/sessions/build/2012/3-035-LG.jpg" controls><source src="http://video.ch9.ms/sessions/build/2012/3-035.mp4" type="video/mp4" /></video></div>
<p>The post <a href="http://mingfeiy.com/media-services-for-build-2012/">Windows Azure Media Services Session info for Build 2012</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/media-services-for-build-2012/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://video.ch9.ms/sessions/build/2012/3-035.mp4" length="622882808" type="video/mp4" />
		</item>
		<item>
		<title>Building video application on Windows 8 &#8211; things you want to know</title>
		<link>http://mingfeiy.com/building-video-application-on-windows-8-all-you-need-to-know/</link>
		<comments>http://mingfeiy.com/building-video-application-on-windows-8-all-you-need-to-know/#comments</comments>
		<pubDate>Sat, 27 Oct 2012 05:09:17 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Code blocks]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[MMPPF]]></category>
		<category><![CDATA[Smooth Streaming]]></category>
		<category><![CDATA[Windows 8]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1314</guid>
		<description><![CDATA[<p>If you want to build video applications on Windows 8 platform, you may find this blog useful. We (Windows Azure Media Services team) ships Smooth Streaming Client SDK for Windows 8 and Microsoft Media Platform Player framework (MMPPF) in addition to Windows 8 Media Foundation to help you build rich media applications. Building Video application on Windows [...]</p><p>The post <a href="http://mingfeiy.com/building-video-application-on-windows-8-all-you-need-to-know/">Building video application on Windows 8 &#8211; things you want to know</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>If you want to build video applications on Windows 8 platform, you may find this blog useful. We (<a href="https://www.windowsazure.com/en-us/home/features/media-services/">Windows Azure Media Services</a> team) ships <a href="http://visualstudiogallery.msdn.microsoft.com/04423d13-3b3e-4741-a01c-1ae29e84fea6">Smooth Streaming Client SDK for Windows 8</a> and <a href="http://playerframework.codeplex.com/">Microsoft Media Platform Player framework</a> (MMPPF) in addition to Windows 8 Media Foundation to help you build rich media applications.</p>
<h4><span style="color: #3366ff;">Building Video application on Windows 8 &#8211; what are supported? </span></h4>
<p>If you are building a video application on Windows 8 and your video source is H.264 (.MP4) for instance: <span id="more-1314"></span></p>
<ul>
<li><span style="line-height: 21px;">• You could use <a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.mediaelement">MediaElement</a> class in XAML application to handle the playback. Code sample: </span></li>
<li>
<pre class="crayon-plain-tag">&lt;MediaElement Source="Media/video1.mp4" AutoPlay="True" /&gt;</pre>
</li>
<li><span style="line-height: 21px;">• Or you could use &lt;video&gt; tag in HTML5 application. Code sample: </span></li>
<li>
<pre class="crayon-plain-tag">&lt;video width="320" height="240" controls="controls"&gt;
  &lt;source src="movie.mp4" type="video/mp4"&gt;
&lt;/video&gt;</pre>
</li>
<li><span style="line-height: 21px;">Here is a detail list of video format that Windows 8 playback pipeline support (<a href="http://blogs.msdn.com/b/b8/archive/2012/06/08/building-a-rich-and-extensible-media-platform.aspx">full details in Windows blog</a>) : </span></li>
<li><span style="line-height: 21px;"><a href="http://mingfeiy.com/wp-content/uploads/2012/10/supported-video-format.png"><img class="aligncenter  wp-image-1322" title="video format supported by Windows 8" src="http://mingfeiy.com/wp-content/uploads/2012/10/supported-video-format.png" alt="" width="554" height="232" /></a></span></li>
<li>That&#8217;s what happen when developing an application with .Mp4 URL for instance. Windows 8 Media pipeline has Decorder to decode the video, Renderer to render the image and Decrypter to decrypt the video if it is protected. As long as the video format you provides falls into the category I showed in the table above, Windows 8 Media pipeline will handle for you. Meanwhile, Windows 8 team put in a lot of efforts for optimizing all these operations to achieve battery optimization, hardware acceleration and etc.</li>
<li>
<h4><span style="color: #3366ff;">Playing Smooth Streaming content using Smooth Streaming Client SDK for Windows 8</span></h4>
</li>
<li>What if you want to deliver adaptive streaming, such as smooth streaming through Windows 8 store app? Yes, this is possible with our smooth streaming SDK as an extension of Windows 8 media platform. When you hand in a application with Smooth Streaming URL (&#8230;/manifest), media engine won&#8217;t be able to understand. However, Windows 8 SDK has <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms700189(v=vs.85).aspx">Media Foundation Interface</a> (IMFByteStreamHandler) for fetching media data from given media source. And we build Smooth Streaming extension through that Interface to help media pipeline understand Smooth Streaming by &#8220;unwrapping it&#8221;. As we know, <a href="http://en.wikipedia.org/wiki/Adaptive_bitrate_streaming#Microsoft_Smooth_Streaming">Smooth Streaming</a> is like a format wrapper of H.264. And once we &#8220;unwrap&#8221; the format, we feed H.264 video back to Windows 8 media pipeline. And the pipeline could do all the decoding, rendering and decrypting job as showed in diagram below. Since H.264 is a native codec of Windows 8 platform, we could benefit from the video optimization of the platform.</li>
<li><a href="http://mingfeiy.com/wp-content/uploads/2012/10/Smooth-Streaming-Windows-81.png"><img class="aligncenter  wp-image-1330" title="Smooth Streaming Windows 8" src="http://mingfeiy.com/wp-content/uploads/2012/10/Smooth-Streaming-Windows-81-1024x472.png" alt="" width="819" height="378" /></a></li>
</ul>
<h4><span style="color: #3366ff;">What&#8217;s the relationship between Smooth Streaming Client SDK and Media Player Framework?</span></h4>
<p>I think this graph below explains the relationship between these two. Smooth Streaming Extension SDK is built on top of Media Pipeline as I explained in earlier section. Media Framework is one level higher that wrapping around Smooth Streaming Extension SDK. It provides additional functionality, such as player styling, advertisement support, close caption support and etc. If you want to have more control over your media player, I would suggest you use Smooth Streaming Client SDK. But you need to build a media player from scratch. However, if you want to get a media player up and running immediately with UI styling, you should try our Media Framework. And it is very easy to customize the default media player we provided.</p>
<p style="text-align: center;"><a style="font: inherit; text-decoration: underline; text-align: center;" href="http://mingfeiy.com/wp-content/uploads/2012/10/framework.png"><img class="aligncenter  wp-image-1335" style="opacity: 0.85;" title="Smooth Streaming SDK and MMPPF" src="http://mingfeiy.com/wp-content/uploads/2012/10/framework.png" alt="" width="359" height="306" /></a></p>
<p>I have a few blogs on how to get started with each of them:</p>
<p><span style="color: #993366;"><strong>&lt; Smooth Streaming Client SDK &gt;</strong></span><br />
Download: <a href="http://visualstudiogallery.msdn.microsoft.com/04423d13-3b3e-4741-a01c-1ae29e84fea6">Smooth Streaming Client SDK for Windows 8</a></p>
<ul>
<ul>
<li><span style="line-height: 21px;">• Building Windows Store Apps with Smooth Streaming Client SDK Beta 2 (<a href="http://mingfeiy.com/building-windows-store-apps-smooth-streaming-client-sdk-beta-2/">link</a>)</span></li>
</ul>
</ul>
<p><strong>&lt; Microsoft Media Platform Player framework &gt;</strong><br />
Download: <a href="http://playerframework.codeplex.com/">http://playerframework.codeplex.com/</a></p>
<ul>
<ul>
<li><span style="line-height: 21px;">• Microsoft Media Platform Player Framework for windows 8 – closed caption support (<a href="http://mingfeiy.com/microsoft-media-platform-player-framework-windows-8-closed-caption-support/">link</a>)</span></li>
<li><span style="line-height: 21px;">• Adding VMAP support for Windows 8 video app using Microsoft Media Platform Player Framework (<a href="http://mingfeiy.com/add-vmap-support-windows-8-video-app-using-microsoft-media-platform-player-framework/">link</a>)</span></li>
<li><span style="line-height: 21px;">• Advertising support for Media Player framework on Windows 8 (<a href="http://mingfeiy.com/advertising-support-media-player-framework-windows-8/">link</a>)</span></li>
</ul>
</ul>
<blockquote><p><span style="line-height: 18px;">Question: If I don&#8217;t use Smooth Streaming, could I use Microsoft Media Platform Player Framework for its additional features such as Advertising?</span></p>
</blockquote>
<p><strong>Answer:</strong> Yes! MMPPF supports progressive download. You could utilize MMPPF&#8217;s functionality such as standard advertisement support, closed caption support, multiple audio support or simply styling your media player. Besides Windows 8 store app, Media player framework also has Silverlight version and HTML5 version for browser. Especially, Silverlight version media player has been released for over 2 years and it is a very well-establish player framework for many events, such as NBC Sunday night football. By using Media Player framework, you could provide consistent video player experience onto different platforms.</p>
<blockquote><p>Question: Should I build a store application for Windows 8, or a browser version of media player?</p>
</blockquote>
<p><strong>Answer:</strong> I shall say it depends on your business need. HTML5 &lt;video&gt; in IE, Chrome or Firefox doesn&#8217;t support any adaptive streaming format, such as Smooth Streaming. Safari has its <a href="https://developer.apple.com/resources/http-streaming/">proprietary implementation</a> for HTTP live streaming, however, it is only available on IOS platform. Hence, if you want to deliver any content in adaptive streaming, you have to build a Windows 8 app. You may also ask, is there other adaptive streaming format besides Smooth Streaming gets supported by Windows 8? The answer is <a href="http://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP">DASH</a> (Dynamic Adaptive Streaming over HTTP). DASH spec is still in draft stage but DASH is expected to be the standard for adaptive streaming format. We are working on getting DASH supported by Windows 8.</p>
<h4><span style="color: #3366ff;">Some awesome application: Hulu Plus</span></h4>
<p><a href="http://blog.hulu.com/2012/10/22/hulu-plus-gets-the-windows-8-treatment/">Hulu Plus hits Windows Store</a> a few days ago, which is built on top of our SDK. The video playback is very smooth and seeking is very fast as well. I do enjoy the Pin-to-Start functionality so I could jump into my favorite show right away. The most attractive feature I found is being able to &#8220;Snap View &#8221; my video in a small windows and use other application side-by-side.</p>
<p><a href="http://mingfeiy.com/wp-content/uploads/2012/10/07_snap_view_resized2.jpg"><img class="aligncenter size-full wp-image-1351" title="Snap View Hulu" src="http://mingfeiy.com/wp-content/uploads/2012/10/07_snap_view_resized2.jpg" alt="" width="600" height="337" /></a></p>
<h4><span style="color: #3366ff;">Summary</span></h4>
<p>Windows 8 is a great device for entertainment. By leveraging on our SDK and framework, we hope you could create amazing video application, which not only deliver content smoothly, but also provide excellent interaction experience for the viewers. Meanwhile, if you are interested in creating, managing and delivery video content from the cloud, you could check out our Media Services in the cloud &#8211; <a href="http://mingfeiy.com/what-windows-azure-media-services/">Windows Azure Media Services</a>.</p>
<p>The post <a href="http://mingfeiy.com/building-video-application-on-windows-8-all-you-need-to-know/">Building video application on Windows 8 &#8211; things you want to know</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/building-video-application-on-windows-8-all-you-need-to-know/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Introducing Windows Azure Media Services .NET SDK NuGet package</title>
		<link>http://mingfeiy.com/introducing-windows-azure-media-services-nuget-package/</link>
		<comments>http://mingfeiy.com/introducing-windows-azure-media-services-nuget-package/#comments</comments>
		<pubDate>Tue, 23 Oct 2012 20:21:29 +0000</pubDate>
		<dc:creator>mingfeiy</dc:creator>
				<category><![CDATA[Code blocks]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Nuget]]></category>
		<category><![CDATA[Windows Azure Media Services]]></category>

		<guid isPermaLink="false">http://mingfeiy.com/?p=1303</guid>
		<description><![CDATA[<p>Official Windows Azure Media Services Nuget package is here: Media Services Nuget Page. And you could search it by windowsazure.mediaservices. NuGet is a Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. If you have no idea what Nuget is, go [...]</p><p>The post <a href="http://mingfeiy.com/introducing-windows-azure-media-services-nuget-package/">Introducing Windows Azure Media Services .NET SDK NuGet package</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Official Windows Azure Media Services Nuget package is here: <a href="https://nuget.org/packages/windowsazure.mediaservices">Media Services Nuget Page</a>. And you could search it by <span style="color: #3366ff;">windowsazure.mediaservices</span>. NuGet is a Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. If you have no idea what Nuget is, go and check out this <a href="http://nuget.codeplex.com/documentation?title=Getting%20Started">overview</a>.</p>
<p>Media services .NET SDK works with <span style="color: #3366ff;">.NET 4.0 framework</span> and it includes the following three components: <span id="more-1303"></span></p>
<ul>
<li><span style="line-height: 21px;">• WCF Data Services 5.0 for OData V3 <a href="http://www.microsoft.com/en-us/download/details.aspx?id=29306">link</a><br />
</span></li>
<li><span style="line-height: 21px;">• Windows Azure SDK 1.7 (June 2012) <a href="http://www.microsoft.com/en-us/download/details.aspx?id=29988">link</a></span></li>
<li>• Windows Azure Media Services SDK 1.0 (June 2012) <a href="http://www.microsoft.com/en-us/download/details.aspx?id=30153">link</a></li>
<li>* we utilize Windows Azure Storage client and we support both v1.6 and v1.7 now.</li>
</ul>
<h4><span style="color: #3366ff;">Here is how to use NuGet Package in Visual Studio 2012 RTM:</span></h4>
<p>1. If you don&#8217;t have Nuget installed, you could install it using <span style="color: #3366ff;">Visual Studio Extension Manager</span>, and here is <a href="http://docs.nuget.org/docs/start-here/installing-nuget">how</a>.</p>
<p>2. Once you have Nuget package installed, after open a project, you could right-click on <span style="color: #3366ff;">Reference folder</span> and choose <span style="color: #3366ff;">Manage Nuget Package&#8230;</span></p>
<p><a href="http://mingfeiy.com/wp-content/uploads/2012/10/NuGet_Package.png"><img class="alignnone size-full wp-image-1304" title="Manage Nuget Package" src="http://mingfeiy.com/wp-content/uploads/2012/10/NuGet_Package.png" alt="" width="482" height="96" /></a></p>
<p>3. Type in <span style="color: #3366ff;">windowsazure.mediaservices</span> in search box, choose <span style="color: #3366ff;">Windows Azure Media Services .NET SDK</span> and you will get all reference installed and imported.</p>
<p><a href="http://mingfeiy.com/wp-content/uploads/2012/10/Nuget_Net.png"><img class="alignnone  wp-image-1305" title="Nuget .Net Package" src="http://mingfeiy.com/wp-content/uploads/2012/10/Nuget_Net.png" alt="" width="707" height="326" /></a></p>
<p>4. If you want to check more on how to use Windows Azure using .NET SDK, check out my other blog <a href="http://mingfeiy.com/hello-windows-azure-media-services/">here</a>. If you have any questions, please let me know in my Nuget page: <a href="https://nuget.org/packages/windowsazure.mediaservices">https://nuget.org/packages/windowsazure.mediaservices</a></p>
<p>Thanks!</p>
<p>The post <a href="http://mingfeiy.com/introducing-windows-azure-media-services-nuget-package/">Introducing Windows Azure Media Services .NET SDK NuGet package</a> appeared first on <a href="http://mingfeiy.com">Mingfei Yan</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mingfeiy.com/introducing-windows-azure-media-services-nuget-package/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
