There is a new build of Expression Encoder 4 available that fixes some issues related to Screen Capture:
http://blogs.msdn.com/b/expressionencoder/archive/2010/07/31/10044506.aspx
It is also possible to download the screen capture CODEC as a separate package which enables you to open screen capture files in other tools:
Lastly, Steve Marx listened to my call for an Expression Encoder publishing plugin version of his Adaptive Streaming->Azure Blob Storage work and has made one:
Cool stuff.
When I was working on the Expression Encoder Team we would get a number of questions about the possibility of hosting IIS Smooth Streaming files on Windows Azure blob storage. The Azure Publishing Plugin that I wrote supported file upload for regular non streaming files but for ISMV content, the service would have needed to support IIS Media Services in order for it to play back successfully.
MP4 Explorer was a possible way of converting a Smooth Streaming file back to multiple file chunks which could be uploaded to Azure that would play just fine but this was a somewhat clunky (chunky?) process.
Steve Marx, on the Azure team, has gone one step better and written an upload tool which takes a ISMV file and chunks it on the fly as it is uploaded to Azure:
Blog post:
http://blog.smarx.com/posts/smooth-streaming-with-windows-azure-blobs-and-cdn
Code:
http://code.msdn.microsoft.com/smoothstreamingazure
Now, all Steve needs to do is update the publishing plugin code to use this and there would be an integrated experience inside of Expression Encoder
Even better, the IIS and Azure guys should make their stuff play together and just support Smooth Streaming directly in Blob storage. Here’s hopin’
Posted 4/13/2010 12:46:25 PM. 8 comments
One of the new things being shown on the Microsoft Booth at NAB2010 is a preview of Expression Encoder 4. The big new feature that everyone has been waiting for is Live Smooth Streaming support. Here’s a quick look:
Posted 11/9/2009 9:49:20 AM. 0 comments
Oscar has responded to my request and listed out the detailed instructions for enabling Powershell Remoting to facilitate remote encoding:
This is actually great info if you are running Windows 7 on multiple machines (which has PowerShell 2 built in) as you can do a lot of general-purpose remote admin over PS as well
Thanks, Oscar!
Posted 11/6/2009 2:05:18 PM. 2 comments
At work today Oscar called me up asking how to apply a user preset with the PowerShell Convert-Media module that we shipped in the Encoder SDK.
As a side note he reported that he uses the module a lot and apparently it works just great over PowerShell Remoting allowing him to easily do remote encoding from machine to machine. Pretty cool! Oscar.. if you fancy doing a guest post on how to set this up, you’d be most welcome :-)
Before we look at the answer, a quick review on presets: Expression Encoder 3 has two types of settings presets: System and User.
System presets ship as resources that are built in to the Expression Encoder binaries. They can be applied via the preset palette in the GUI or via a series of static properties in the Encoder API:
public void encode() { Microsoft.Expression.Encoder.Job ajob = new Microsoft.Expression.Encoder.Job(); ajob.MediaItems.Add("foo.mpeg"); ajob.ApplyPreset(Microsoft.Expression.Encoder.Presets.VC1HD720pVBR); }
User Presets, on the other hand, exist as XML files typically in $home\Documents\Expression\Expression Encoder\JobPresets. They are created in the GUI by clicking on the + button:
which triggers the Save Preset dialog allowing the selection of the individual properties that get saved:
User presets can also be created via the API if needed. They are applied from GUI by switching to the User tab in the preset pallet
and from the API by using the following syntax:
public void encode() { Job ajob = new Job(); ajob.MediaItems.Add("foo.mpeg"); Preset userPreset = Preset.FromFile("Preset.xml"); ajob.ApplyPreset(userPreset); }
Convert-Media
The version of the Powershell Convert-Media sample module that we shipped with Encoder 3 only supports applying the System flavor of presets. If you look in the sourcecode for the module which gets installed along with Encoder 3 and can be found in:
%Program Files%\Microsoft Expression\Encoder 3\SDK\Samples\EncoderPowerShellModule
You’ll see that these system presets are exposed using a custom attribute called PresetSwitch:
/// <summary> /// H264ScreenEncodingVBR Preset /// </summary> [Parameter(ParameterSetName = "Objects", Mandatory = false)] [ValidateNotNullOrEmpty] [PresetSwitch()] public SwitchParameter H264ScreenEncodingVBR { get; set; }
This means that from PowerShell, you can do the following:
and get parameter completion on the various preset switches that are available (type –H264 and hit tab repeatedly to see the various H.264 system presets).
What is missing is the ability to apply a User Preset from a file. Adding this capability the Convert-Media is pretty simple. First off, we’ll create a new switch that will accept the file system path to the preset we want to apply:
If you haven’t already, open convertmedia.cs and add the following property definition to the ConvertMedia class:
/// <summary> /// Filename of preset /// </summary> [Parameter(ParameterSetName = "Objects", Mandatory = false)] [ValidateNotNullOrEmpty] public string PresetFileName { get; set; }
Now we need to load and apply the relevant preset if the switch is present.
Locate the EncodeItem() method and change
this.ProcessPresetSwitches(inputPath, job);
to
if (!string.IsNullOrEmpty(this.PresetFileName)) { job.ApplyPreset(this.PresetFileName); } else { this.ProcessPresetSwitches(inputPath, job); }
Rebuilt the module (you need to run VS elevated to do this as the source is located in Program files).
Applying a User Preset from Powershell is now simply a matter of typing
Voila, Oscar :-)
