Workin' on Windows running on Windows Azure.
Previous Next 

clip_image001Today the Expression Encoder team is releasing Expression Encoder v1.0 (the product formerly known as Expression Media Encoder).  It is a proud moment for us since we are the first Microsoft product group to ship an application targeting the Silverlight platform.

Owners of both Expression Studio as well as Expression Media can use their product keys to unlock the RTM release.  The same download will work as a 180 day trial from:

For those that have played with the preview release, I've compiled a list of new stuff to look out for. 

There are a few more goodies coming out to support the release over the next couple of weeks that I'll be reporting here.

What's New in Expression Encoder RTM:

Live encoding.  We've demoed the live encoding functionality but this was not included in the public preview of xEncoder.  Today you can get your hands on this.  Live encoding mode lets you stream from webcams, and file sources direct to file archive and live network stream.  In addition to what was shown previously, we've added:

Live Script Commands: Script commands are interactivity triggers that are embedded in the ASF container.  A script command is basically a script pair combined with a timestamp that is stored either in the header or a separate stream.  When Silverlight opens and plays a file containing Script commands, the <MediaElement> XAML tag will fire a MarkerReached event at each marker point.  This is true for both file-based playback as well as live streams.  Based on Javascript event handlers, the player can therefore trigger animations and custom behaviors.

In the public preview of xEncoder, it was possible to embed these interactivity triggers into files during offline encodes.  This is/was how we implement close caption support (since baseplayer.js which powers all of our templates knows what to do when it encounters MarkerReached with the type field set to Caption).

Since Silverlight also supports Script commands in live streams we added the ability to trigger these as part of a live encode.



"Let me start streaming" In-place Wizard UI:  A number of internal users gave us feedback that it was hard to figure out what needed to be configured to start up a live stream.  To address this and avoid the need for a separate, wizard based UI we came up with the idea of an in-place wizard which shows the necessary steps and hilites the related UI when the user clicks on the hyperlinks.



Output audio level meters:  In a typical production encoding environment it is essential to be able to visualize audio.

Enhanced Live UI Layout:  We performed a number of iterations on the Live UX in Expression Blend with our designer; one of the advantages of being a WPF application.  The result is hopefully a big improvement over what we had before.


Error Clip / Frame count: Show a diagnostic frame count for sources and outputs.  Pick a source to roll over to if an error occurs on the current source (eg a webcam is unplugged).


Publishing Plugin Model:  We wanted to add content publishing to xEncoder in an extensible way.  To this end, we've actually added an extensibility model which enables 3rd parties to author publishing plugins.  An MSDN article will be appearing on this shortly.  We also showed this in action in the Channel 9 Video.


De-interlacing: If you are encoding footage from a DV or HDV camera that is interlaced, xEncoder will automatically de-interlace before encoding.  It will detect the interlaced flag in VIH2.  We also detect interlaced content coming from Quicktime sources.

Smart recompression: (Source Profile):  This is one of my favorite features.  It enables you to take a pre-existing WMV file and selectively re-encode certain streams whilst passing through/copying others.  This means that you could take a 720p source with 5:1 audio (the latter of which is not supported by Silverlight 1.0) and create a new file by re-encoding only the audio and just copying the video samples through.  In another example, you could take a video you already encoded and copy both audio and video streams rewriting just markers and or script commands.  In both of these examples, the encode duration would be small because stream copying is much quicker than re-encoding.


To assist the user, we've also added a warning flag that shows when another encoding setting would prevent this feature from working correctly:


Note that currently, if you trim the file at all you will not be able to use Source Profile.

Non-square pixel output:  One of the primary reasons we added non-square pixel output was to enable the HD audio only re-encode scenario mentioned above.


We also show the pixel aspect ratio of the source clip:


Still Image leader / trailer / Filesource:  You can use a still image eg a JPEG or PNG both as a leader / trailer in the offline encoder as well as a file source in the live encoder.

ASF Packet Size:  Based on customer feedback, we added the ability to customize the size of ASF packets for both offline and live encoding.

AVI Synth supportAVISynth is a tool popular within the video community.  From their website:

AviSynth is a powerful tool for video post-production. It provides almost unlimited ways of editing and processing videos. AviSynth works as a frameserver, providing instant editing without the need for temporary files.

AviSynth itself does not provide a graphical user interface (GUI) but instead relies on a script system that allows advanced non-linear editing. While this may at first seem tedious and unintuitive, it is remarkably powerful and is a very good way to manage projects in a precise, consistent, and reproducible manner. Because text-based scripts are human readable, projects are inherently self-documenting. The scripting language is simple yet powerful, and complex filters can be created from basic operations to develop a sophisticated palette of useful and unique effects.

Based on customer feedback, Expression Encoder 1.0 now supports .avs as an input type.

Pause encoding:  Again, we put this in based on customer feedback.  Whilst in the middle of a lengthy encode, it is sometimes handy to be able to pause the encode in order to regain the CPU on your encoding box for another task.  Once complete, you can resume the encode.


Save job As:  We have a dirty flag for jobs

Script commands in header or stream:  In live scenarios, script commands are always in a separate stream although since we now automatically import script commands from both the header and an script streams, it is possible to re-write commands from stream to header and vice versa


VBR Audio:  We missed this from the public preview and Ben Waggoner gave us a really hard time.


Failed job restart by clicking encode:  In the public preview of Expression Encoder if a job failed because, for example, the input file was missing, the only way to re-attempt processing was to rest the job.  Unfortunately, resetting the job caused all of the encoding settings to be returned to their defaults.  In the release version, if a job fails you can retry it simply be clicking encode again.

Because of this more intuitive behavior as well as strong words from Dr Sneath who had a somewhat sleepless night as a result of our first design, we've removed the Reset button from the UI (it is still available from the Media Content context menu as well as the Edit menu).

Metadata in templating engine:  The Silverlight output the Expression Encoder generates comes out as the result of a string replacement engine that is somewhat similar to ASP.NET.  You can find out more about the templating engine in the built in help.  One of the things missing from this in the preview was the ability to output metadata which is a common scenario.  See the help for more info on this.

Updated encoding profiles:  We tweaked some of the encoding defaults based on user feedback.  We also changed the naming scheme to use the (AP) and (MP) suffix to indicate VC-1 Advanced Profile and Main Profile respectively.

Toggle marker properties on and off for all markers:  Quickly turn key frames or thumbnails on or off for all markers.


Keyboard accelerators

Integrated Help:  Including a section on how to take a Silverlight player and turn it into an Expression Encoder template.

Profile/Source/Custom output size:  We provide encoding dimensions within the profile in order to a) give an indication of the video dimensions that the desired bitrate is intended for and b) specify dimensions for device profiles.  We took the decision not to offer each of these for both 4:3 and 16:9 profiles; instead we added a selector to the Size pane within Video Profile.  This enables you to select between Profile (dimensions specified in the profile), Source (dimensions of the input clip) or Custom.  If you pick custom in conjunction with Maintain Aspect Ratio, your output will be approximately correct for the bitrate whilst matching the input aspect ratio.


Reg key to enable XML diagnostic:  One of the advantages of Expression Encoder is that it is based on DirectShow and thus can cater to a large number of input formats.  The XML diagnostic regkey allows us to diagnose problematic filters more easily:

HKCU or HKLM SOFTWARE\Microsoft\Expression\Encoder  DWORD value SaveDiagnosticInfo.  Set it to non zero.

App rename: If you have done any work with the command line encoding feature of the public preview, you'll want to make a note that you now need to run encoder.exe, not mediaencoder.exe

Error codes are shown in Activity log.

So that is my list.  I'm sure there's stuff I've missed.

Please do keep the feedback coming; we are already some way into planning the next release and listening intently.

Check out our forums here: microsoft.public.expression.mediaencoder

  1. 1. Made by Oran on 9/6/2007 3:06:00 AM

    So if Expression Encoder can stream live from webcams, will Silverlight itself eventually be able to stream live from webcams? This is one of the big features missing from Silverlight to give it parity with Flash.

  2. 2. Made by Ralf Rottmann on 9/6/2007 9:21:00 AM

    Congratulations on getting this very important pillar of the Expression/Silverlight Media story released! One small note: The download actually is a 60 day trial, not a 180 day one!

  3. 3. Made by Moreno Borsalino on 9/6/2007 5:12:00 PM

    What's about a future support of capture card with BDA drivers like digital TV satellite cards.

  4. 4. Made by Moreno Borsalino on 9/7/2007 8:27:00 AM

    What's about a future support of capture card with BDA drivers like digital TV satellite cards.

  5. 5. Made by andrĂ¡s csizmadia on 9/7/2007 12:56:00 PM

    Hi! I'm a flash and media server developer and highly interested in Live webcam streaming with Silverlight, so any other informations are appreciated. Regards, Andrew

  6. 6. Made by James Clarke on 9/9/2007 5:30:00 AM

    Oran: we hear this request a lot. I've passed it on to the Silverlight time and they send their thanks for your input. Ralf: Based on the website, you are correct about the trial. I'm looking into this at the moment since I thought we were making available a 180 day key. Will report back my findings. Moreno: I don't believe we support BDA cards in v1. Good feedback; we'll look into the feasibility of supporting in the next version. Andrew: +1 on the first point, thx

  7. 7. Made by Jerad Benge on 9/11/2007 11:09:00 PM

    Thank you so much for including Avisynth support, and support for VBR audio! This looks like a really strong 1.0 release, and I'm excited to get busy using it.

  8. 8. Made by Hank Lynch on 9/18/2007 8:01:00 PM

    One thing I'm looking for is command line control of a live encoding session. I have not seen anything on this, is there somewhere I can look, or is there a way to build my own shell for the encoder?

  9. 9. Made by james on 9/25/2007 2:54:00 AM

    Hank.. if you have a chance, please do contact me to discuss this. We are making plans for v.Next and it would be good to chat.. thx James

  10. 10. Made by Philipp on 9/29/2007 4:58:00 AM

    How can I set the VC-1 advanced profile properties from the command line and how dow I start a live encode from the command line in Expression Encoder? Currently I use wmcmd.vbs like this: StartLiveEncode.cmd ------------------- cscript.exe wmcmd.vbs -config Wmv600_Live.weu -output E:\data\media\live\"WMV650" Wmv600_Live.weu --------------- -adevice 0 -vdevice 0 -duration 10200 -broadcast 43300 -a_codec WMASTD -a_setting 64_44_2 -a_mode 0 -v_codec WVC1 -v_mode 0 -v_width 480 -v_height 360 -v_codedwidth 480 -v_codedheight 360 -pixelratio 4 3 -v_clip 10 0 6 8 -v_framerate 29.970 -v_keydist 10 -v_preproc 1 -v_bitrate 586000 -v_buffer 5000 -v_quality 40 -v_performance 40 -v_lookahead 16 -v_loopfilter 1 -v_overlap 1 -v_mslevel 0 -v_msrange 0 -v_mvcost 1 -v_bframedist 2 -v_mmatch 0 -v_numthreads 4 -v_type 0 -pixelformat YUY2 -v_dquantoption 0 -v_dquantstrength 0 -v_percopt 0 -title "" -author "" -album "" -year "2007" -genre "" -copyright "(C)2007" -description "" -rating G thx Philipp

  11. 11. Made by Stuart on 1/30/2008 4:41:00 AM

    Hey guys, I must admit the design of the overall platform looks very slick. Almost reminds me of the current ACDC photo editing layout. I just downloaded the trial & look forward to trying it out. Stuart

  12. 12. Made by lalpri on 8/17/2009 4:14:00 PM

    iBow is a leading IT Services company, headquartered in Oslo, Norway with presence across the globe. IT Solution

  13. 13. Made by Unknown on 9/30/2010 3:57:28 AM

  14. 14. Made by Unknown on 3/2/2016 4:29:32 AM

    Expression Encoder now available | Dean Rowe's WebLog

  email (will not be shown)
 web site


6/22/2018 4:38:58 PM