Welcome to MSDN Blogs Sign in | Join | Help

We've just released an update to Expression Encoder 2 that allows VB.NET developers to build solutions using the Expression Encoder 2 SDK

You can get the update here:

http://www.microsoft.com/downloads/details.aspx?FamilyId=8727DD51-61B3-4692-ABDE-4FDD2779B0D0&displaylang=en

The cool part is that the update is only required on developer machines.  Any apps created in VB.NET on a machine with the fix will run against the unmodified Expression Encoder 2 release bits.

Hope this helps

James

A XAML overlay is a vector-based graphic that is rendered into the users video like a lower third, a logo bug, etc...  XAML is Extensible Application Markup Language and is a declarative XML-based language created by Microsoft which is used to initialize structured values and objects.  Below are examples of XAML overlays.

james2smily_face

The goal of the this walk through is to allow you to be able to understand how to get your XAML design from Expression Design into Expression Encoder. 

To create a XAML overlay start by creating your graphic in Microsoft Expression Design or importing a design into Microsoft Expression Design.

After finishing your design you need to make the XAML overlay you created digestible by Microsoft Expression Blend (if you want to animate it) by completing the following steps using Microsoft Expression Design.

Select All

File>Export

Export as XAML WPF Canvas(Take note of where you save this file)

Silverlight XAML is not supported

export

At this point you can use the XAML overlay as a static graphic overlay in Microsoft Expression Encoder.

 

If you wish to animate the overlay follow these instructions.

Open Microsoft Expression Blend

Create a new project a WPF Application (.exe)

image

In the project panel right click on csproj file and Link to Existing Item…

image

Navigate to the XAML file you created in Microsoft Expression Design and Double click on the XAML file in the project tab

image

This will open up the XAML file that you created in Microsoft Expression Design and open it in Microsoft Expression Blend.

At this point you should be able to animate the XAML.

Add a new storyboard then add your animation key frames to create your animation.

image

Then navigate to the file menu and select save and your animated XAML overlay is ready for Microsoft Expression Encoder.

In Microsoft Expression Encoder add overlay and navigate to original Microsoft Expression Design XAML file from design and add this file as an overlay.  After adding the overlay you can customize length visible, fade in, and fade out.  On the video window you can scale the graphic and place it in the desired position. Since it is vector-based, the quality of text and graphical elements will be maintained.

image image

Now that Expression Encoder 2 has been released, the team is hard at work on the next version of the product.
We want to be as responsive to community feedback as possible, and would like to set up a panel of customers with whom we can have ongoing conversations.

What is the Customer Panel?

The Customer Panel is a way for us to build strong relationships with users of our product. We'll use it as a way to understand your needs, workflows as well as how you use the product. We'll also use it to float future feature ideas and get feedback on them

What is the time requirement?

The Customer Panel is an ongoing project. The overall impact should be minimal and if at any point you no longer want to participate, just tell us. Typically we'll aim to reach out the Panel every couple of months or so. There may some times when we reach out more frequently.

How is this different to a Technology Adoption Program (TAP)?

TAPs are for specific releases and focus on getting you pre-releases of the software to play with. We'll use the same framework for the Customer Panel, but it is longer lived and goes beyond a particular release. This is an opportunity to have lasting impact on product direction.

OK sign me up!

If you want to take part, please send me an email by clicking here.

I'm pleased to announced that we just pushed a preview of the SLS publishing plugin for Expression Encoder 2 live:

http://download.microsoft.com/download/2/2/a/22a8da23-ffa7-4e5a-8fed-8239d3a7b322/SLSPlugin for Expression Encoder 2.msi

This plugin makes it very easy to publish and manage your encoded Silverlight video experiences online via the Silverlight Streaming service from within the Expression Encoder application.

As well as adding support for Expression Encoder 2, the plugin has a number of enhancements:

  1. File-by-file upload:  Removes the zip step and improves uploaded reliability and performance.
  2. Better upload progress reporting.
  3. Quota display that shows available/remaining online storage space.
  4. Support for application republishing: you can replace or merge existing applications.
    image
  5. UI enhancements (eg resizable preview window, application list sorted in inverse date order etc).

Hope this helps,

James

image

AVCHD (Advanced Video Codec High Definition) is a file format commonly used by the latest generation of consumer HD camcorders. It consists of an AC-3 audio stream and an AVC (H.264) video stream encapsulated into a custom MPEG2 transport stream container.

While Expression Encoder 2 does not natively support that file type, it is possible to use them if the right components are installed. More specifically, three DirectShow components are required:

  1. A MPEG2-TS splitter that supports the AVCHD variant.
  2. An AVC (H.264) decoder.
  3. An AC-3 decoder.

After installing those 3 components, you should be able to playback the M2TS files directly in Windows Media Player as well as importing and using them within Expression Encoder 2.

Also, David Sayed posted a very nice and detailed article on one of the multiple ways to get Expression Encoder 2 to support AVCHD files: http://blogs.msdn.com/david_sayed/archive/2008/05/31/avchd-recipe-for-expression-encoder-2.aspx

But if you own a Sony or Canon camcorder, you can also take advantage of the DirectShow filters that shipped with the bundled software.

 

Sony AVCHD Camcorders (SR, CX, UX and TG series)

Sony camcorder users: Sony Picture Motion Browser comes with a MPEG2-TS splitter and an AVC decoder. To use them in Expression Encoder 2, simply register sjvtdl.ax and SMParse.ax found in “C:\Program Files\Sony\Sony Picture Utility\Shared4” by following those steps:

  1. Press the Start button, select “All Programs” and “Accessories” and right-click on “Command Prompt”.
  2. In the context menu, select “Run as administrator”.
  3. Click on the "Continue" button when the "User Access Control" appears. A command prompt window will appear.
  4. In the command prompt, type: regsvr32 “C:\Program Files\Sony\Sony Picture Utility\Shared4\sjvtdl.ax”
  5. Repeat step #3 with SMParse.ax
  6. Close the command prompt.

Note: You will still need an AC-3 decoder to decode the audio.

M2TS files should now be playable via Windows Media Player and can be imported in Expression Encoder 2.

 

Canon AVCHD Camcorders (HG10, HF10/100)

Canon Pixela ImageMixer 3 SE registers all the required DirectShow components required by Expression Encoder upon it's installation.

 

Usage in Expression Encoder 2

To import the MTS or M2TS files in Expression Encoder, simply select "All Fles (*.*)" in the file picker in the import dialog. Then select the wanted MTS and M2TS files. The files will be treated like any other video files.

Known Expression Encoder 2 limitations:

  1. Expression Encoder doesn't currently support 6 channel authoring, so DD5.1 audio will be downsampled to stereo.
  2. Only deinterlaced encoding operations are currently supported.

 

We are hoping to further enhance the AVCHD workflow in future versions of Expression Encoder.

 

Last week we released the Expression Encoder 2 SDK. Here's a little video of Charles and I, giving a quick introduction. Apologies for the rather close camera angle as Charles was just holding the camera with his left hand, and it didn't help that our makeup and wardrobe department was out that day.

You can get it from the following location.

Microsoft® Expression® Encoder 2 SDK

Please try it out and don't hesitate to send us your feedback.

8 Comments
Filed under:

This post is an update to the previous Getting started with the Expression Encoder Object Model post, but updated to work with the RTM version of Expression Encoder V2 as the progress event handler changed a little from Beta to RTM.

(This post assume you’ve already installed Expression Encoder V2 available from here, and that you have Visual Studio 2005 or 2008 installed.)

First of all start Visual Studio and select File… New Project… You can choose which type of application you would prefer, like a WPF or Windows Forms application. For my test here, I’m just going to choose a Console Application. Give it a suitable name.

image

Go ahead and click OK.

Before you can start coding against the Expression Encoder object model you need to add references to the applicable assemblies. Select Project…Add Reference from the menu. When the dialog comes up you need to select

Microsoft.Expression.Encoder
Microsoft.Expression.Encoder.Types
Microsoft.Expression.Encoder.Utilites

and because some of our types derive from ObservableCollection you also need to select

WindowsBase.

You can select them one at a time or hold down CTRL and multi-select each one before clicking OK.

image

Now we're ready to do some coding.

To make it easier to pick up the Encoder classes let's first of all add a using statement. Just add the following near the top of the file where the other using statements are.

using Microsoft.Expression.Encoder;

One of the main classes that you'll end up dealing with in Expression Encoder is the MediaItem class. This allows you to find out information about a video or audio file and ultimately allow you to encode it. To create one of these you just pass the filename of the media file you want.to the constructor.

e.g.
MediaItem mediaItem = new MediaItem(@"C:\input\video.avi");

Obviously, you'll change the filename to the one you want to use.

Once this has been created you'll be able to access a bunch of information about the file

e.g.
FileDuration
OriginalAspectRatio
OriginalVideoSize

This is also the way you'll control how the video is encoded. If you type mediaItem followed by a "." you should trigger the Intellisense drop down which shows you all the properties and methods on this item. You should see a lot of properties that correspond to options in the UI of the main Encoder application. If you want Intellisense comments to appear and want to check out the help file, see this post.

For now we'll just use the defaults.

Before we can encode the file we need to create and add it to a Job.

This is simply done by the following statements.

Job job = new Job();
job.MediaItems.Add(mediaItem);

If you want to encode multiple files in the same job you can go ahead and create multiple MediaItem's and add them to the job.

Before you encode you need to set the directory where the output will go. This is done by setting the OutputDirectory property.

job.OutputDirectory = @"C:\output";

By default Expression Encoder will create output in sub folders named using the Job Id. These will be something along the lines of your machine name followed by the current date and time, e.g. "DEAN 4-21-2008 11.00.47 PM".

You can turn this feature off by setting the CreateSubfolder property.

job.CreateSubfolder = false;

Then the output will be created in the output directory directly.

For the simplest case, that’s all you need before encoding the job. This is done by just calling the Encode method.

job.Encode();

Putting it all together your program should look something like this.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Expression.Encoder;

namespace MyEncoderApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            MediaItem mediaItem = new MediaItem(@"C:\input\video.avi");


// Create a job and the media item for the video we wish // to encode.
Job job = new Job(); job.MediaItems.Add(mediaItem);
            // Set the output directory and encode
            job.OutputDirectory = @"C:\output";
            job.Encode();
        }
    }
}

Now you should be able to compile and run the application. After it's finished running, you should have the encoded output file underneath the output directory. It should have a filename that matches the original, but with a .wmv file extension.

If you run the application and it crashes, then that is probably because an exception was thrown that is not currently being caught. For example if your MediaItem points to a file that doesn't exist or isn't a valid media file, you will see that an InvalidMediaFileException is thrown. You can then run it under the debugger to get more details.

Assuming everything worked OK then for your next step you'll probably want to show some progress during the encode. First of all you need to a add a progress event handler function. Something like the following

static void OnProgress(object sender, EncodeProgressEventArgs e)
{
    Console.WriteLine(e.Progress);
}

Obviously here we're just dumping the progress to the screen on each line. If you were writing a GUI app you would probably update a progress bar or something similar.

To tell Encoder to call this function you need the following line when you're creating the job.

job.EncodeProgress 
    += new EventHandler<EncodeProgressEventArgs>(OnProgress);

Now you’re code should look something like the following.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Expression.Encoder;

namespace MyEncoderApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            MediaItem mediaItem = new MediaItem(@"C:\input\video.avi");

            // Create a job and the media item for the video we wish
            // to encode.
            Job job = new Job();
            job.MediaItems.Add(mediaItem);

            // Set up the progress callback function
            job.EncodeProgress 
                += new EventHandler<EncodeProgressEventArgs>(OnProgress);

            // Set the output directory and encode.
            job.OutputDirectory = @"C:\output";
            
            job.Encode();
        }

        static void OnProgress(object sender, EncodeProgressEventArgs e)
        {
            Console.WriteLine(e.Progress);
        }
    }
}

When you compile and run the application you should now see a bunch of numeric values going to 100, something like the following.

clip_image002

That’s it for a basic encoding app. From here you can now try experimenting with various properties on the MediaItem. For example, if you want to try tweaking the output profile, you can look at this post – Changing the output profile.

Note that if you’re running a 64-bit OS then you may also need to change your Target Platform within Visual Studio from “Any CPU” to "x86” as Expression Encoder is 32-bit.

9 Comments
Filed under:

We're busy working on a more official SDK and some samples that use the Expression Encoder object model, but in the meantime here's a link to a zip file that contains a couple of XML files that will enable Intellisense comments and a CHM help file.

ExpressionEncoderOM.zip

 (UPDATE: I've also added the file as an attachment to this post in case the server that contains the first link isn't up).

Once you've installed Expression Encoder 2 and downloaded and extracted the zip file, copy the two XML files to your "\Program Files\Microsoft Expression\Encoder 2\SDK" directory. The next time you create or load a project that uses the object model you should get descriptions for the methods and properties like below.

Intellisense

The CHM file is a help file that was actually built from the source code using Sandcastle. If you open the file and it just says "Navigation to the webpage was canceled" in the right pane you need to "Unblock" the file first. Right click the CHM file, select Properties and on the General tab click the Unblock button near the bottom right. Now reopen the file and everything should be fine.

Help

Hope you find these useful and let us know if you have any questions.

3 Comments
Filed under:

Attachment(s): ExpressionEncoderOM.zip

(UPDATE: This post was written against the Beta of Expression Encoder v2. Now that the RTM version is out we recommend that you install that version and check out the RTM version of this post instead)

(This post assume you’ve already installed Expression Encoder Beta 2 available from here, and that you have Visual Studio 2005 or 2008 installed.)

First of all start Visual Studio and select File… New Project… You can choose which type of application you would prefer, like a WPF or Windows Forms application. For my test here, I’m just going to choose a Console Application. Give it a suitable name.

image

Go ahead and click OK.

Before you can start coding against the Expression Encoder object model you need to add references to the applicable assemblies. Select Project…Add Reference from the menu. When the dialog comes up you need to select

Microsoft.Expression.Encoder
Microsoft.Expression.Encoder.Types
Microsoft.Expression.Encoder.Utilites

and because some of our types derive from ObservableCollection you also need to select

WindowsBase.

You can select them one at a time or hold down CTRL and multi-select each one before clicking OK.

image

Now we're ready to do some coding.

To make it easier to pick up the Encoder classes let's first of all add a using statement. Just add the following near the top of the file where the other using statements are.

using Microsoft.Expression.Encoder;

One of the main classes that you'll end up dealing with in Expression Encoder is the MediaItem class. This allows you to find out information about a video or audio file and ultimately allow you to encode it. To create one of these you just pass the filename of the media file you want.to the constructor.

e.g.
MediaItem mediaItem = new MediaItem(@"C:\input\video.avi");

Obviously, you'll change the filename to the one you want to use.

Once this has been created you'll be able to access a bunch of information about the file

e.g.
FileDuration
OriginalAspectRatio
OriginalVideoSize

This is also the way you'll control how the video is encoded. If you type mediaItem followed by a "." you should trigger the Intellisense drop down which shows you all the properties and methods on this item. You should see a lot of properties that correspond to options in the UI of the main Encoder application.

For now we'll just use the defaults.

Before we can encode the file we need to create and add it to a Job.

This is simply done by the following statements.

Job job = new Job();
job.MediaItems.Add(mediaItem);

If you want to encode multiple files in the same job you can go ahead and create multiple MediaItem's and add them to the job.

Before you encode you need to set the directory where the output will go. This is done by setting the OutputDirectory property.

job.OutputDirectory = @"C:\output";

By default Expression Encoder will create output in sub folders named using the Job Id. These will be something along the lines of your machine name followed by the current date and time, e.g. "DEAN 4-21-2008 11.00.47 PM".

You can turn this feature off by setting the CreateSubfolder property.

job.CreateSubfolder = false;

Then the output will be created in the output directory directly.

For the simplest case, that’s all you need before encoding the job. This is done by just calling the Encode method.

job.Encode();

Putting it all together your program should look something like this.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Expression.Encoder;

namespace MyEncoderApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            MediaItem mediaItem = new MediaItem(@"C:\input\video.avi");


// Create a job and the media item for the video we wish // to encode.
Job job = new Job(); job.MediaItems.Add(mediaItem);
            // Set the output directory and encode
            job.OutputDirectory = @"C:\output";
            job.Encode();
        }
    }
}

Now you should be able to compile and run the application. After it's finished running, you should have the encoded output file underneath the output directory. It should have a filename that matches the original, but with a .wmv file extension.

If you run the application and it crashes, then that is probably because an exception was thrown that is not currently being caught. For example if your MediaItem points to a file that doesn't exist or isn't a valid media file, you will see that an InvalidMediaFileException is thrown. You can then run it under the debugger to get more details.

Assuming everything worked OK then for your next step you'll probably want to show some progress during the encode. First of all you need to a add a progress event handler function. Something like the following

static void OnProgress(objectsender, PublishProgressEventArgs e)
{
    Console.WriteLine(e.Progress);
}

Obviously here we're just dumping the progress to the screen on each line. If you were writing a GUI app you would probably update a progress bar or something similar.

To tell Encoder to call this function you need the following line when you're creating the job.

job.PublishProgress +=
    new EventHandler<PublishProgressEventArgs>(OnProgress);

Now you’re code should look something like the following.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Expression.Encoder;

namespace MyEncoderApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            MediaItem mediaItem = new MediaItem(@"C:\input\video.avi");
 
            // Create a job and the media item for the video we wish 
            // to encode.
            Job job = new Job();
            job.MediaItems.Add(mediaItem);

            // Set up the progress callback function
            job.PublishProgress +=
                new EventHandler<PublishProgressEventArgs>(OnProgress);

            // Set the output directory and encode.
            job.OutputDirectory = @"C:\output";
            job.Encode();
        }

        static void OnProgress(object sender, 
            PublishProgressEventArgs e)
        {
            Console.WriteLine(e.Progress);
        }
    }
}

When you compile and run the application you should now see a bunch of numeric values going to 100, something like the following.

clip_image002

That’s it for a basic encoding app. From here you can now try experimenting with various properties on the MediaItem. For example, if you want to try tweaking the output profile, you can look at this post – Changing the output profile.

UPDATE: If you’re running a 64-bit OS then you may also need to change your Target Platform within Visual Studio from “Any CPU” to "x86” as Expression Encoder is 32-bit.

4 Comments
Filed under:

Ben Waggoner just did a great blog post that shows you how to encode screen recordings for display in Silverlight.  We on the Expression Encoder team like his settings so much that we are using them as the defaults in the final version of Expression Encoder 2.

You can see the results over on the IIS blog.  Here is an example:

Installing Necessary IIS Components on Windows Vista

Install only the components you need for your Web applications by leveraging IIS7’s modular architecture.  This tutorial will cover installing the modules necessary for serving ASP and ASP.NET pages from IIS7 in Windows Vista.

image

As Ben says, make sure you go full screen to get the full effect.

Here are some of the sessions at MIX08 that highlighted or included Expression Encoder:

http://sessions.visitmix.com/?selectedSearch=T09 Overview of Expression Encoder 2
http://sessions.visitmix.com/?selectedSearch=BCT07 Encoding Video For Microsoft Silverlight Delivery Scenarios
http://sessions.visitmix.com/?selectedSearch=BCT05 Integrating Media Into Silverlight Applications (around 0:41:00)
http://sessions.visitmix.com/?selectedSearch=BT06 Silverlight and Advertising (around 0:40:50)
http://sessions.visitmix.com/?selectedSearch=KYN0801 Day one KeyNote  (around 1:09:50)

1 Comments
Filed under:

Charles and I presented our Session at MIX08 on Expression Encoder 2 this morning.  It went reasonably well.  With luck the video should appear here shortly.  We'll re-publish it on the blog sometime next week.

We also have a couple of other MIX videos to publish soon.  In the meantime, here are some pix that David shot:

IMG_1130 IMG_1134 IMG_1147

9 Comments
Filed under:

Helloooo from Mix 08.. we can finally talk about what the Expression Encoder team have been up to for the last 6 months. Let's talk (and apologies in advance for the length of this post!).

Today we are announcing Expression Encoder 2, the second version of Microsoft’s contemporary video authoring platform.

image

In a nutshell we have been extremely busy incorporating your feedback and balancing our small, nimble resources across a number of competing goals:

1) to satisfy video compressionist’s desire for a best of breed VC-1 encoding tool

2) to bring new tools into the hands of all comers wishing to embrace the Silverlight video tidal wave and..

3) to enable the rapid authoring of interactive media by integrating enhanced content creation tools into the encoder.

Expression Encoder 2 is now a product in its own right rather than a feature imageof Expression Media. It’s part of Expression Studio 2 and also available standalone.

Before we step through what’s new, it's also worth mentioning that there are some really exciting new features that you've asked us for that we are not ready to announce just yet.  Stay tuned for more details.

Another point to call out: Expression Encoder 2 continues to target Silverlight 1 experiences; the updated templates use loose XAML and JavaScript as before.  This is in common with the whole of Expression Studio 2.  At MIX, we are demoing an early preview of our Silverlight 2 managed Baseplayer.  This component provides all of the playback functionality inside an Expression template.  The new managed baseplayer enables the template developer to extend the base functionality (playback, chapters, captions etc) using the managed languages they know and love and add interactivity, custom behaviors etc.  We'll be talking more about that in the coming weeks.

So to the list..

Better Encoding

  • VC-1 advanced authoring SDK integration: by adopting the new VC-1 authoring SDK, Expression Encoder 2 is able to author better quality video faster.  We've exposed a set of presets for tuning the encoder as well as detailed settings with comprehensive tooltips for the advanced compressionist.image
  • New profiles, and CODECS: Encoder 2 supports a number of new modes and codecs including Quality VBR, WMA Pro (stereo), WMA Lossless, 24 bit audio and audio/video encoding stream selection.
  • Improved MPEG source support: We now include an MPEG 2 decoder in the product to give a consistent story across platforms.  The decoder we ship supports transport streams (so you are able to work with sources that originated from HDV cameras.  Seeking performance and accuracy has been greatly improved.
  • Better multi-core performance: we are not done with performance enhancements by any means but have made decent progress in Expression Encoder 2, particularly on multi-core systems.
  • Improved aspect ratio handling: by default, the new Profile Adaptive mode is selected which preserves the width specified in the profile but varies the height according to the aspect ratio of the source.  Translation: it just works.  Additionally, when Source compression is used the aspect ratio mode as well as pixel aspect settings are fixed up to ensure source compression will just work.
  • Pre-processing enhancements: the new Pre-processing palette contains a number of settings for controlling resizing (Bicubic, Lanczos, Supersampling in addition to nearest neighbor and bilinear), de-interlacing and audio options.  As well as detecting the need to de-interlace from the header of the file, the user can manually override the defaults.  In addition to the V1 capabilities, Expression Encoder 2 includes inverse telecine as well as a new pixel-adaptive de-interlacer.  On the audio side, there is a volume leveling filter as well as a volume control.
    image

Better Silverlight Interactive experiences

The second bucket of functionality covers improvements to Silverlight output.

  • New templates:  We've revisited both the functionality and the design of our core Silverlight Templates.  As before these support core functionality such as Chapter points and close captioning and are user extensible.
  • Template Parameters:  We have had a lot of requests for more and easier control of how templates behave.  Examples include not automatically playing (or buffering) the video, being able to control the background color of the HTML and more.  In Expression Encoder 2 we've added parameters to templates.  The parameter system is extensible enabling developers to easily expose custom things e.g. skin primary color etc.
    image
  • Gallery Templates: Often you want to publish multiple videos into a single experience.  We now have a number of such templates in the product including one made by Quiksilver for the Pro France surfing competition!
    image
  • Template preview: as you pick templates from the list, you will see a real-time preview rendered in Silverlight in the Output palette.
  • Edit in Expression Blend: This is one of our favorite features!  There are many times when it is desirable to be able to take a default Silverlight template and modify the look (or even completely replace the look).  It is now quick and easy to copy one of the defaults and edit in Expression Blend adding or changing individual XAML elements or completely replacing everything.  Since elements are hooked up to behaviors declaratively using well known names, zero knowledge of JavaScript or code is required.  Once Expression Blend has been launched, saving any of the files you are working on will immediately reload the template into Expression Encoder in the background ready to try.
    image
  • Partial rebuild:  Hand in hand with Edit in Expression Blend is another feature that makes iterative changes incredibly quick and easy.  Each time you click encode, instead of recreating everything every time, the minimal amount of work is done.  If you change encoding settings, the file will have to be re-encoded but if you are just moving markers or script commands, changing the poster frame or modifying the template the previously encoded results are used.  This works nicely for tasks such as template customization, adding/moving caption markers or adding a new source to a multi-clip gallery. Oh and if you encode a job, save the job, and re-launch the partial rebuild state is maintained. Yippee!
  • ASP.NET Development Server: we now use the same design-time web server component as Expression Blend and Visual Studio enabling template content to include server side code, web services and other dynamic goodness.
  • Hooks for Silverlight 2 templates: Whilst we are not shipping any in the box, the hooks are in place to enable easy integration of Silverlight 2 output in the future.

Enhanced Content Creation tools

  • Brand new imaging pipeline: We've made some good investments in our core imaging pipeline that enable new functionality in Expression Encoder 2 and beyond.  Some of the benefits are listed below.
  • Burn-in of moving overlays:  be it video, alpha video or crisp vector-based motion graphics in the form of XAML, overlays are no longer static!  Control over opacity, placement and looping are all provided including real-time preview at design time.
    image
    XAML can also be used for leaders and trailers and will similarly get rendered into the output video. 
  • Cuts editing: in recognition of the fact that it is often necessary to trim not just the start and end of clips but also pieces from the middle, we made sure that the upgraded pipeline supported simple editing.  The core scenario for this feature is taking a long piece of content and re-purposing it as a short-form version.  Note that in Encoder 2 we do not support the editing together of arbitrary clips into a sequence.
  • Smart re-compression.  One of the disadvantages of using a full-blown editor for the above task is that it will take more time to import, edit and export.  With smart re-compression, our pipeline copies as much of the original compressed streams as possible.  Only at the joins where the cadence changes is it necessary to re-encode.  The advantages here are: one less tool in the change, quality preservation and speed.  Stream copying is way faster than re-encoding.
  • New Timeline UI:  hand in hand with the above improvements in the compression engine goes our new timeline UI.  This provides simple cutting and splicing and trimming controls.  It is also zoomable enabling more accuracy with edits and marker/script placement.  Once you have removed sections, it is possible to toggle a display that shows the sections that you removed in case you want to change your mind.  Script commands are intelligently grouped according to type making it easier to work with different interactivity types on on the same clip.  The timeline UI allows graphic placement of the overlay.
    image

Object model

We heard loud and clear that developers wanted to be able to programmatically use our encoding engine.

  • API assemblies available from the GAC
  • Code in any Managed language (including managed C++)
  • Access to complete batch encoding capabilities including overlays, cuts etc.
    image

Other Stuff

There are a ton of other improvements that are too many to list in full.  Among these are:

  • Enhancements to Live Encoding mode: · Encoding improvements (including dynamic complexity) via the VC-1 SDK, Encoding Profile editing , Silverlight live preview template
  • file extension for jobs: open jobs by double clicking on them.  Yea.
  • Most Recently Used menu: for re-opening recent jobs
  • Persistence of UI settings in job e.g. preview in browser
  • More robust job and preset loading when dependent files are missing
  • Enhancements to marker handing allowing a preset to merge or replace markers and script commands
  • Interlaced / Progressive indicator in media list

So there is the list for now.  You can get our beta bits as part of the Expression Studio 2 beta package from here.

Please continue to give us great feedback and stay tuned for our MIX video podcasts where we'll be recording some demos and other goodness over the next few days.

Thanks,

The Expression Encoder Team

21 Comments
Filed under:

Charles and I have arrived here at The Venetian ready for Mix08.

Our session is currently blacklisted but should appear here shortly:

http://sessions.visitmix.com/

If you are attending and want to meet up with us, do send email.

Need to test that image uploading is working so here is a view from my window:

IMAGE_332
5 Comments
Filed under:

Welcome to the new Expression Encoder team blog!  As Charles says in the video, we plan on posting a bunch for hints and tips over the coming weeks.  We also encourage you to give us your feedback.

All of our video blog posts are made with Expression Encoder and published using Silverlight on the Silverlight Streaming by Windows Live video hosting service.

We are currently hard at work on the next release and look forward to sharing the details soon.  Thanks for watching / reading!

The Expression Encoder Team

 
Page view tracker