Expression Encoder

The team blog for Expression Encoder.

  • Expression Encoder

    EventID and restarting publishing points using Expression Encoder 4 SP1


    In the service pack for Expression Encoder 4, we added the ability to specify an EventID for live smooth streaming broadcasts.  This feature is extremely useful to prevent down-level cache pollution (where you can here/see stale cached fragments when reusing publishing points).   You can use any string that contains URL safe characters or clicking the Generate button will put the current date/time as a string.


    Another benefit of the EventID field is that it will allow you to restart your publishing point from a Stopped state.  When the Encoder stops broadcasting to an IIS Smooth Streaming publish point, we send an empty 'mfra' box which informs the publish point to switch to a Stopped state.  This allows for DVR playback to be available to the users immediately after the broadcast ends.  The Encoder does not allow you to connect to a publishing point that is in use and to check this, we check to see if there is a manifest associated with the pub point.  A manifest will exist if the publishing point is in a Started or Stopped state so by default we block restarting the publish point.  To work around this, if you specify a different EventID for each broadcast (including the first one, null doesn't count)  to the publishing point that contains the tag:   <meta name="restartOnEncoderReconnect" content="true" /> :  We will ignore the manifest check and restart the publishing point.  Here are the steps:

    1. Install Expression Encoder 4 SP1
    2. Install IIS Media 4.0 on your server
    3. Create a Live Smooth Streaming publishing point on the server.
    4. Using Explorer, navigate to the location of the publishing point.
    5. Open the ISML file in a text editor and add the following between the <head> tags:  <meta name="restartOnEncoderReconnect" content="true" />
    6. Now set up your broadcast in the Encoder and point to the publishing point.
    7. Before clicking Start, specify an EventID on the Output panel.
    8. Now if you want to reuse the same publishing point for another broadcast,  just specify a different EventID and click Start


  • Expression Encoder

    Expression Encoder 4 Pro Now Available for Purchase


    Earlier this month we announced the availability of Express Studio 4. At that time we made the free version of Expression Encoder 4 available on our website.

    Today we are pleased to announce that Expression Encoder 4 Pro is now available for purchase from the Microsoft Store. If you purchased a retail version of either Expression Encoder 3 with IIS Smooth Streaming or the full-featured Expression Studio SKU, you can upgrade to Expression Encoder 4 Pro for FREE!. Find out how here.

    Expression Encoder 4 Pro contains the full feature set of the product and gives you the following additional functionality not available in the free version:

    • H.264/AAC Encoding
    • Additional decoders for input types (MPEG2, MPEG/TS Splitter, Dolby Digital (AC3), MP4 and H.264/AAC)
    • Live IIS Smooth Streaming Support
    • Unlimited Screen Capture
    • Digital Rights Management (PlayReady) Integration



    More information about the difference between Expression Encoder 4 and Expression Encoder 4 Pro can be found here.


    Additional Information/Links

    Main Expression Encoder 4 Product Page
    Expression Encoder 4 Pro Demonstration
    Expression Encoder Forum
    How to Use Live Smooth Streaming Article

  • Expression Encoder

    Expression Encoder Screen Capture codec now available


    We have just release the Expression Encoder Screen Capture codec as a separate download package.  This will to allow users to playback screen capture output files (XESC) on machines without having to install Expression Encoder on the machine.  Installing the package will install and register the codec so the files can be played back in the Windows Media Player.  You can find the download package here.



  • Expression Encoder

    Microsoft Expression Encoder 3 FAQ


    An updated version of the FAQ is available on our forum here.

  • Expression Encoder

    New Silverlight Streaming Publishing plugin for Expression Encoder: Silverlight 2 support


    We just released an update to the Silverlight Streaming publishing plugin to support the Silverlight 2 templates that were added in Expression Encoder 2 SP1.

    You can get it from the Download Center here.


  • Expression Encoder

    IIS Smooth Streaming server component beta released


    Back in October, we announced a new Microsoft video delivery technology called IIS Smooth Streaming.  In a nutshell, this approach combines both client (based on Silverlight) and server (based on IIS) components that, together, deliver scalable media experiences up to 720p+ over the internet using the plain old HTTP protocol.

    We have had a preview of the technology running over at courtesy of our CDN partner, Akamai.  We also added support for encoding to, and previewing, the new format in back in Expression Encoder 2 SP1.

    Today we are announcing beta availability of the IIS Smooth Streaming component completing the picture and enable users to test the technology end to end..  You can download the extension over on the IIS Site.

    There will also be a number of talks on all aspects of Smooth Streaming at MIX (including one I’m doing on encoding).. keep an eye on for more info. 

    For more information and background on the technology check out the following links :

    John Bocharov

    I’ve seen the future and the future is… Smooth!

    Smooth Streaming Questions- We’ve Got Answers!

    Alex Zambelli

    Smooth Streaming Architecture

    The Birth of Smooth Streaming

    A Brief History of Multi-Bitrate Streaming


    James Clarke (me :-) )

    Inside Expression Encoder’s MediaPlayer control part 3: Smooth Streaming playback heuristics (coming soon)

    Inside Expression Encoder’s MediaPlayer control part 2: Debugging IIS Smooth Streaming client code

    Inside Expression Encoder’s MediaPlayer control part 1

  • Expression Encoder

    AVCHD support in Expression Encoder 2


    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:

    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 and 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\”
    5. Repeat step #3 with
    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.

  • Expression Encoder

    Silverlight and Expression Encoder to support H.264


    In case you missed this press release, we just announced that H.264 support is coming to both Silverlight and Expression Encoder.

    Later this week, at the International Broadcasting Conference (IBC) 2008 in Amsterdam, Microsoft Corp. will demonstrate an important new capability for Silverlight - playback of H.264-based video. H264 is a standard video specification that delivers high-definition video over a variety of delivery channels. During the event, Microsoft will also highlight how customers in Europe are reaping the benefits of adopting Silverlight.

    At IBC 2008 we will be demonstrating a technology preview of H.264 video and Advanced Audio Coding (AAC) audio playback support in Silverlight, and H.264 authoring using Microsoft Expression Encoder and Windows Server 2008 for delivery. Until now, Silverlight has supported the SMPTE VC-1 and Windows Media formats, as well as MP3 for audio, enabling customers to take advantage of broad support across the Windows Media ecosystem, including third-party tools, service providers and content delivery networks.

    We’ll be talking more about the next release of Expression Encoder at Streaming Media West 2008 in a couple of weeks time.

  • Expression Encoder

    Help and Intellisense for the Expression Encoder Object Model.


    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.

     (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.


    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.


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

  • Expression Encoder

    Tutorial on encoding screen recordings for Silverlight using Expression Encoder 2


    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.


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

  • Expression Encoder

    How CPU cycles are used when encoding


    Once in a while on our forum, somebody asks why the CPU usage isn't at 100% when offline encoding. I recently took the time to provide a thorough answer, which I think would be beneficial posted here.

    So first, let's explore what's happening when encoding a media file using Expression Encoder. The encoding process involves 5 phases:

    1. Reading the source(s) from storage.
    2. Demuxing and decoding the source(s) into uncompressed frames.
    3. Pre-processing the frames (deinterlacing, resizing, cropping, etc).
    4. Encoding and muxing the frames.
    5. Writing the stream to storage.

    If any one of those operations is slower than the others, all the encoding pipeline will suffer in terms of performance because it will bottleneck the flow of frames into it.

    #1 and #5 are usually the bottleneck when source files are either not local (aka slow Network share) or are very high-bandwidth coupled with a slow storage. Possible solutions: making sure the source files are copied locally on your fastest storage available and outputting to a different local storage are good solutions to reduce the bottleneck in those two areas.

    #2 usually becomes a bottleneck because of the type of sources and the codecs used to decode them. Obviously, using complex HD sources will use significantly more resources than simple lower-resolution sources. Some 3rd party codecs are extremely slow, running only on one core. Trying to test other codecs available on the PC by disabling some of the codecs listed in the "Tools -> Options -> Compatibility" dialog may help reducing the bottleneck. It's also worth noting that because many codecs are single-thread, having faster cores can help enormeously here. This is the main reason why a 3.4MHz 4-core is faster than a 2.6MHz 8-core PC in many cases.

    #3 can become the bottleneck when unneeded cropping/rescaling is applied, when "SuperSampling" resizing and/or "Auto Pixel Adaptive" deinterlacing are applied. The last two are our defaults, which were the best choice for "high quality" encodes at the time we shipped v4 RTM over 18 months ago and we unfortunately can't change the defaults until our next major version since it would be an SDK breaking change. For better balance between performance and quality, we highly recommend using "Bicubic" resizing and "Auto selective blend" deinterlacing. Both of them will perform 2-3x times faster than the defaults and will reduce the chances of the pre-processing phase being the bottleneck. Of course, if at all possible, removing the need for a resize (aka using the same frame size and pixel aspect ratio as the source) will also reduce the load on that phase while keeping better output quality.

    This leaves phase #4, where most of the CPU cycles should be used if there are no bottlenecks elsewhere in the pipeline. In the best of worlds, this phase should be your bottleneck, which would very likely max out CPU usage on an 8-core PC for a single-stream encode. Depending on the encode settings, 100% may still not be achieved, but it should be pretty high. Here are few ideas to make this phase faster:

    1. Make sure to use the defaults for number of threads and slices used to encode (where applicable).
    2. If speed is most important, consider applying our "Fastest" Quality preset, which will significantly speed up encoding process at the cost of some output quality.
    3. Use proper encode settings. For example, trying to encode 480p content into 300kbps would be stressing the encode phase and could slow it down to a crawl. We recommend about 1.5+ Mbps for 480p and about 3+ Mbps for 720p. Consider reducing the frame size and/or frame rate if you are trying to achieve significantly lower output bitrates than this.
    4. If GPU encoding is enabled on a slow GPU when encoding to H.264, it could make the GPU the bottleneck. Solution: disable GPU encoding or get a better GPU.
    5. On larger scale PCs (16 cores and above), single one-stream encodes can't maximize the CPU usage. Parallel encoding is an option to maximize the PC resources. If using a NUMA enabled system, process affinity is highly recommended to ensure memory is not shared across CPUs between the different encoding processes, which can reduce performance.

    In the case where nothing seems to help maximizing CPU usage, one could also consider running 2-4 jobs in parallel in separate encoding processes. Using the UI, simply start 2-4 Encoder instances and run the encodes in parallel, bearing that enough system memory is available. This suggestion would certainly not help with a storage bottleneck situation (aka phase #1 and/or #5), but should greatly help speed up the process of encoding multiple jobs.

    Finally, if encoding to H.264, using GPU encoding may drastically help speed up the encoding phase. Cuda is supported in Encoder 4 Pro SP1, and Intel QSV (Sandy Bridge) in our next SP release coming soon. When used with the proper hardware, either (or even both) options can cut down encoding time by more than half, and in some cases significantly more.

    Hopefully, this gives you some insights on how to isolate and resolve encode performance issues.

  • Expression Encoder

    SharePoint 2010 publish plugin released


    Hi everyone, we just posted a publish plugin to upload your output directory to the new SharePoint 2010 Asset libraries.  Check it out:



  • Expression Encoder

    Tidbits about Indexing


    When importing certain media files like VOB, TS and M2TS files, Expression Encoder needs to parse through the file to ensure the duration and video frame timestamps are accurate by creating its own corrected table of content in memory. Without this analysis, the encoded output files could have the wrong duration (either trimmed or having extra black frames at the end) and audio video sync could not be guaranteed, especially if the file was trimmed.

    This analysis operation, called indexing, is unfortunately time consuming since it requires to read and demux the whole media file and typically requires a few minutes per hour of content, mostly depending on storage speed. Because of this, it is recommended to first copy this type of media file locally before importing it to ensure maximum efficiency.

    Note that while this operation is automatically executed upon import within the Encoder application, it is not executed by default when importing a media file via the SDK and needs to be explicitly called before the MediaItem constructor via the CalculateDuration member of AudioVideoFile like this:

                         AudioVideoFile file = new AudioVideoFile(filename);


                         MediaItem item = new MediaItem(file);

    It is worth pointing that if the CalculateDuration method isn't called, there will still be indexing done in-line during the encoding which will fix the timestamps, but it is possible that the duration of the output file will be wrong. For this reason, we highly recommend using the code above if source files that require indexing are used.


  • Expression Encoder

    Expression Encoder 2 MIX sessions


    Here are some of the sessions at MIX08 that highlighted or included Expression Encoder: Overview of Expression Encoder 2 Encoding Video For Microsoft Silverlight Delivery Scenarios Integrating Media Into Silverlight Applications (around 0:41:00) Silverlight and Advertising (around 0:40:50) Day one KeyNote  (around 1:09:50)

  • Expression Encoder

    Live IIS Smooth Streaming in Expression Encoder 4


    September 2010

    Authors:  Jamie Lang and Sam Wookey


    Expression Encoder 2 was the first version of Encoder to support encoding content into the IIS Smooth Streaming format. In Expression Encoder 4 Pro, we have taken this support one step further with the introduction of Live Smooth Streaming. Now, you can stream audio and video from your webcam or capture card directly to an Internet Information Services (IIS) server with the latest IIS Media Services installed. Live Smooth Streaming content is delivered over existing HTTP networks thus reducing the custom infrastructure needed to broadcast a live event. CDNs and content providers no longer have to worry about how much capacity they can dedicate on their much more resource constrained streaming networks. They can take advantage of all the resources of their HTTP network and do not have to worry about maxing out network capacity and shutting out users from live events. For a user viewing a Live Smooth Streaming broadcast, they no longer need to worry about watching a video feed tailored to the lowest common denominator of consumer hardware. A Live Smooth Streaming broadcast contains different video quality levels all the way up to true HD quality (720p+), allowing users on cells phones and the fastest PC’s to consume video from the same stream at a quality level appropriate for their platform.

    Live IIS Smooth Streaming is only available in the Pro version of Expression Encoder.  You can purchase it individually or as part of Expression Studio 4 Ultimate.

    In the rest of this article, we are going to walk through the steps needed to get up and broadcasting your first Live Smooth Streaming event. At the end, we have included a few links where you can find more information about Live Smooth Streaming and ways that you can take advantage of it for you particular application. 



    The first step in using Live Smooth Streaming in Expression Encoder 4 Pro is to download and install IIS Media Services for Internet Information Server. IIS Media Services provides the server side component which distributes Live Smooth Streaming content to clients (or other edge servers).  IIS Media Services can be installed using the Web Platform Installer (WPI) or from the IIS download site. The following prerequisites must be fulfilled prior to installing IIS Media Services:

    • You must use IIS 7 running on one of the following operating systems:
      • Windows Server 2008
      • Windows Server 2008 R2
      • Windows Vista with SP1
      • Windows 7
    • To manage IIS Live Smooth Streaming using the IIS Manager user interface, the IIS Management Console for IIS must be installed.


    The IIS site contains an excellent tutorial on installing and configuring the IIS Media Services. This page will take you step by step on installing Live Smooth Streaming support on the server, creating your first publishing point, and testing your installation using sample content.

    Live Smooth Streaming in Expression Encoder 4 only supports Push mode on a publishing point. This means that Encoder will push content to the IIS server (as opposed to Pull mode, where the IIS server will pull video from a support encoder). It is important to make sure that all publishing points you create that you wish to use with Expression Encoder 4 have the Push option selected under the Live source type combo box, as in the picture on the below.

    Dialog to set up IIS Smooth Streaming live publishing point

    If you are running IIS Media Services 4.0 Beta, you can also set up the publish point to transmux the stream into a format compatible with Apple mobile devices along with a .m3u8 format manifest.   This will require that the Expression Encoder is streaming using H.264 Baseline (iPhone) or H.264 Main (iPad) profiles.  When setting up the publish point, there will be a new tab called Mobile Devices.  Checking the Enable output to Apple mobile digital devices will enable this feature.  Then you can set up a webpage using a HTML 5 video tag to point to the new .m3u8 manifest:

            <video width="640"
                   controls="true" >Live</video>

    For more information, see the Apple HTTP Live Streaming article on the IIS site.


    Now that you have installed the required server side components, we can begin using Expression Encoder 4 to start broadcasting some content. The first step after installing Expression Encoder 4 is to create a new Live Broadcasting Project from the New Project window.

    Next, we need to choose the sources that we are going to use to broadcast.  Expression Encoder 4 can broadcast from a range of different sources, from video and audio capture cards, still pictures or audio and video files.  All of the live encoding functionality that was supported in past versions of Encoder, such as switching between different sources, looping file sources, jumping from one file source to the next, and configuring all of your source properties, are supported for Live Smooth Streaming broadcasting.   Also, make sure you remember to Cue the source you want to begin broadcasting with. The Start button stays disabled until you Cue one source to start with.

    After you have added all of the sources that you wish to broadcast from, it is time to configure your encoding settings to use Live Smooth Streaming. To make this easier, we have created many built-in presets to get you started. Expression Encoder 4 supports creating Live Smooth Streaming content using either the VC1 or h264 video codecs, giving you the flexibility to distribute your content on a whole range of different clients and devices. Silverlight clients support the playback of both types of content, but if you wish to broadcast to clients such as an iPhone, you will need to use one of the h264 presets.

     Dialog to select presets in Expression Encoder

    Figure 2:  Encoder live preset panel

    The built-in presets will get you started with some basic settings to get you broadcasting quickly. If you wish to configure these settings further, you can find all of the options you want under the Video and Audio tabs. Each stream supports different settings for bit rate and size, and using the various tabs, you can add and remove streams, as well as configure the settings for each stream. See the Tuning Your Broadcast section below for suggestions on optimal settings for your encoding machine.

    You can also change the Advanced Video Encoding Settings for the overall broadcast by expanding the chevron under the Video settings expander. However, unless you know what each setting does, it’s best to leave these as the defaults from one of the presets for Live Smooth Streaming, as some of these settings can have a very detrimental effect on your broadcast. Some settings, such as Closed GOP, cannot be changed, as they will create an invalid Live Smooth Streaming broadcast.

    Figure 3: Configuring individual streams

    Now that you have established that you are creating a Live Smooth Streaming broadcast, you can set the location to push the broadcast. On the Output tab, click on the Streaming checkbox to enable pushing a broadcast to an IIS Live Smooth Streaming enabled server. By default, the Publishing Point radio button is enabled. Broadcast mode is disabled when a Live Smooth Streaming output format is selected.

    Type the location of your Live Smooth Streaming publishing point into the Location combo box (Figure 4). The publishing point URL looks like http://<server name>/<virtual directory>/<name>.isml. The <name> for the publishing point comes from the file name you chose when creating the publishing point on the server.


    Figure 4: Selecting a publishing point

     Live Smooth Streaming publishing points behave differently than Windows Media Services publishing points, so if you are familiar with WMS publishing, there are a couple caveats to keep in mind. Live Smooth Streaming publishing points aren’t created automatically like WMS ones, and they don’t start automatically either when you start streaming to them. They must be created manually on the server and they must be started before broadcasting.   You can set the ‘Start publishing point upon first client request’ checkbox on the Advanced tab of the Edit Publish Point dialog to have it start when the broadcast starts.

    Also, a Live Smooth Streaming publishing point must be reset on the server if you wish to broadcast to it multiple times. Each time you start and stop encoding, you must shutdown and restart the publishing point on the server before you can connect to it again.Otherwise, data from the last run will still be on the server and you will encounter errors while broadcasting the next time. This is the most likely source of errors you will receive from the server when using Live Smooth Streaming in Expression Encoder, and your first course of action should always be to shutdown and restart the publishing point on the server before trying to broadcast again.

    After you have chosen the publishing point in the Location combo box, click Connect to test your connection to the server. If you have enabled authentication on the server, you will be prompted for your access credentials. If your credentials are accepted and your publishing point is set up properly, then the Connect button will turn green and the status will say Connected. If you encounter any errors while connecting, or your publishing point is invalid, the Connect button will turn red and an error message will show in the status area.

    Now that you have chosen your sources, selected a Live Smooth Streaming output format, and chosen your publishing point, you are ready to begin your broadcast. Click the Start button to begin encoding.

    There are a few errors that you may encounter while broadcasting.  During broadcasting, if Expression Encoder detects that the number of dropped frames exceeds a minimum threshold, it will show an warning informing you that the playback experience may not be optimal. Broadcasting will not be stopped for this warning but the output may not be optimal.

    Figure 5:  Dropped frames warning

    Errors  can occur as well if the source device or file cannot send information fast enough to send a full chunk to the server.  This usually happens on the lower bit rate streams where the bit rate cannot be written fast enough for the key frame interval which will cause the streams to be out of sync.   If this happens, encoding will fail and you will need to increase the bit rate of the lower streams to make sure there is enough data in these chunks.

    Bitrate too low error message

    Figure 6:  Bit rate too low error

    A third type of error can occur when the source content changes frame rates.  This can happen with some live devices like web cams that reduce the frame rate in low light conditions or it can happen in variable frame rate video files.  When these types of inputs are used as sources, the chunk lengths of the video stream can vary greatly and cause sync issues with the audio stream during playback for long encodes.  To prevent these types of errors make sure the live devices or files can maintain a constant frame rate during broadcasting.


    The third piece in the Live Smooth Streaming ecosystem is the client used to playback a Live Smooth Streaming broadcast. Any number of different clients can be used to view a Live Smooth Streaming broadcast. The Silverlight Media Framework contains a default Silverlight client that you can use to test your streams. If you followed the instructions on the Live Smooth Streaming for IIS 7 tutorial to create and test a publish point, then you already have installed a sample player under %SystemDrive%\inetpub\wwwroot\LiveSmooth (unless you installed the Silverlight Media Framework to a different directory). You can use the default player in this development kit to test out your streams. It includes a graph which displays information such as the current bit rate that is playing, the current bit rate that is downloading, and the current frame rate that is playing. If you wish to use this template to view the streams you are publishing from Expression Encoder 4, then you need to update the mediaSource attribute in the default.html page to point to the publishing point that Encoder is pushing to. Note that the mediaSource attribute is the fully qualified URL that you entered into the Expression Encoder 4 Location combo box, plus the the added tag “/Manifest” at the end. So for example, if in Expression Encoder 4 you entered http://server_name/LiveSmooth/LiveSmoothStream.isml as your publishing point, then the mediaSource attribute in the default.html would be http://server_name/LiveSmooth/LiveSmoothStream.isml/Manifest.

    For a more complete client experience, you can also use one of the live media player templates that are included in Expression Encoder 4 SP1. In SP1, we modified a set of our templates to allow the controls to appear based on the publishing output you select to give user full control over the playback. In the Live Broadcasting project, you should see the new Templates panel next to the Output panel on the right hand side. If you do not see this panel, select it from the Windows menu. Since live broadcasting is different than generating templates in on-demand project, you will need to pre-generate your template to the location where your users can see it. To set up a live template for broadcasting:


    1.  Import your live/files sources and select your output format from the Encode panel.

    2.  Select the output format you want to publish to from the Output panel.  If you select a publishing point, enter the URL to push the broadcast.

    3.  On the Templates panel, select the template you want to use and then click the Generate button.  This will pull up the Generate Template dialog.

    Figure 7: Generate Template dialog

    4.  On this dialog, you can generate multiple templates for different types of broadcasts for each output type selected.

    5.  Select the output type you want to generate a template for and select the location you want to publish to and click Generate.


    The template files will be generated in this location and the <MediaSource> will be hooked up to the output type URL.  Once you are finished generating the templates you need, click Finish and you are now ready to broadcast directly to the Silverlight template.


    Live Smooth Streaming encoding is a very computationally-expensive process, and requires a fast machine to get good results. For example, you cannot encode 12 720p streams on a dual core laptop.  More memory, faster CPU’s, and more cores will all enable you to encode more streams at higher qualities.  To encode at 720p quality levels, you are also going to need to make sure that these cores are fast. Having 8 cores running at 2.0GHz is good configuration, but having 4 cores at 3.0+GHz is better, especially if you want to encode at 720p. Often, it will take experimenting ­with encoding settings to find out what a particular machine can handle. Pay attention to the number of dropped frames while encoding, as Expression Encoder will drop frames when it detects that it cannot achieve the current encoding settings. Dropping frames is usually a sign that your machine is not fast enough to encode using your current settings. Reducing the number of streams, lowering the bit rate of individual streams, and reducing the output resolution of each stream will all result in better performance.

    The Expression Encoder team has created a tool that can allow you to test your hardware's ability to broadcast live IIS Smooth Streaming.  It allows you to select a file type and an Expression Encoder live preset to test against.  It also has additional options to specify the failure tolerance or you can let the tool can generate the optimal streams during the test.  Then Expression Encoder will iteratively run the file though a different IIS Smooth Streaming broadcast scenarios and will complete when the output meets the failure tolerance requirements.  Once finished, you can save the generated preset so that it can be used with the Encoder.  It is recommended that you use different file types to determine a more accurate prediction on your hardware’s capabilities since decoding different codecs can affect broadcasting. 

    You can download this tool from the Expression Gallery website.



    In Expression Encoder 4, you can also encrypt your output IIS Smooth Streaming broadcast using Microsoft PlayReady technology.  You will need to have a PlayReady license server or provider set up to obtain a KeySeed which will allow the server to decode and send a license to the client during playback.  On the Output panel, check the ‘Digital Rights Management’ checkbox to enable the feature.

    Figure 8:  Digital Rights Management


    In this section, you will need to enter:

    • License URL -  the URL to the server that will provide the license.  This URL should point to http://[server name]/playready/rightsmanger.asmx.  Click the Validate button to verify the URL is correct.
    • Key ID:  This field is a unique GUID to identify the broadcast.  Clicking Generate will create a new GUID automatically.
    • Key Seed:  This string should be the base64 encoded string provided by the license server to be used to encrypt the streams.  The Key Seed is used to encrypt the content and has to match the server’s Key Seed so the server can provide the correct license to decrypt the content.

    Silverlight handles the licenses request and downloads during playback on the client.  You can use any of the Expression Encoder templates to playback encrypted content.



    Here are some sites where you can find more information about Expression Encoder 4 and Live Smooth Streaming:

    The Expression Encoder Team Blog is a great place to stay up to date with the latest information about encoder releases and tips and tricks on using Encoder.  If you have any questions about using Expression Encoder 4, the Expression Encoder forum is a great place to start. Here, you can connect directly with the Encoder team and other users to ask questions, request features, and get help with any problems you might be having.

    The IIS Media website has a wealth of information about Live Smooth Streaming. Here, you will find instructions on setting up your server, sample content, comparisons against competing formats, and case studies about other companies using Live Smooth Streaming technology.  

    If you are interested in developing your own media player to consume Live Smooth Streaming content, then the Silverlight Media Framework is the first place you should look.

    There is also a white paper from the IIS team on how to set up live IIS Smooth Streaming in Expression Encoder to stream to Apple Devices.

  • Expression Encoder

    Maximizing your memory usage of your application based on the Expression Encoder SDK


    Fact 1: Currently, our SDK is 32-bit only due to a lot of our dependencies. This brings a few limitations, including a theoretical memory usage limit of 4GB. But because of complex OS memory usage rules, compiled 32-bit applications are limited to access only 2GB by default (this is true on both running on a 32-bit OS or a 64-bit OS via WOW64).


    Fact 2: Encoding video, especially when using HD sources and/or encoding to SmoothStreaming, requires loads of memory. In fact, some encoding operations requires so much memory that our encoding pipeline has to reduce the number of concurrent encoding streams because it's starving memory-wise.


    Fact 3: Memory is much cheaper, with some <$1000 PCs having 12GB of RAM. Concurrently, the 64-bit Windows OS market share has never been higher and users are successfully running their 32-bit applications via Wow64.


    Until Expression Encoder is available in a 64-bit flavor, that 2GB limitation will be a serious bottleneck affecting performance on custom applications using the Encoder SDK.


    Is there a way to mitigate that 2GB memory limit on a 32bit application? In a word: yes.


    For a Native application, you can use the "/LARGEADDRESSAWARE" linker flag, which will let a 32-bit application running on a 64-bit OS allocate up to 2GB of extra user-mode memory, effectively doubling the usable memory and therefore removing some of that bottleneck. And while that flag never got ported to the managed linker, you can also achieve the same result by doing this post-link operation:


    EditBin.exe /LARGEADDRESSAWARE C:\...\bin\Debug\<YourApplication>.exe


    Unfortunately, it’s a little more complicated to take advantage of this extra memory on a 32-bit based OS, as it does involve adding a boot flag ("/3GB") to reduce the kernel memory allocation in favor of user-mode memory, which will provide up to an extra 1GB to applications. But it comes at a price and should be avoided on XP since it may affect system stability because of some GPU memory mapping. A lot more information on this subect is available on those 2 pages:


    It's worth noting that the “/LARGEADDRESSAWARE” flag will simply be ignored on a 32-bit OS if the “/3GB” boot flag isn’t set, so there are no drawbacks in modifying your app with EditBin as explained above.


    Please also note that we already did this operation on the Encoder GUI (EncoderUI.exe) for our users’ convenience, but that step will be required if you want your custom application using the Encoder SDK to be able to use more than 2GB of memory.


    Here is a good blog entry with more details on this topic:

  • Expression Encoder

    How to get Expression Encoder to work with the latest Apple QuickTime ( and greater)


    In their recent QuickTime update, Apple added a new DLL dependency to their SDK which unfortunately breaks our QuickTime integration. Until this situation is resolved in a more permanent fashion, here is a workaround to get QuickTime to work again in all versions of Expression Encoder:

    • From the Start menu, right-click on "Computer" and select "Properties".
    • Select "Advanced system settings"
    • In the "System Properties" dialog, click on "Environment Variables..." in the Advanced tab.
    • In the "System variables" list, find the "Path" variable and double click on it.
    • Add this string at the end of "Variable value" to add the missing directory to your path:

    ;C:\Program Files (x86)\QuickTime\QTSystem\         (For a 64-bit environment)


    ;C:\Program Files\QuickTime\QTSystem\                 (For a 32-bit environment)

    • Click OK to close all the dialogs and restart Windows. QuickTime will be working again in Expression Encoder.


  • Expression Encoder

    Thank you


    Thanks to everyone that voted for us in the Streaming Media Readers' Choice Awards!  We are a finalist in the Encoders under $1000 category.

  • Expression Encoder

    Expression Encoder Wins Most Innovative Product at Business Video Expo


     Enterprise video is increasingly being recognized by industry experts, such as Gartner, as an important strategic technology.  Accordingly, the Expression Encoder and IIS Media Services Team attended the new Business Video Expo, part of ITEXPO East 2011.  The event included about 180 exhibitors and attracted nearly 8,000 attendees, 80% of whom were executives.


    Microsoft exhibited with Accordent Technologies, a partner that has developed an automated software-based video creation, management, publishing, and delivery platform leveraging Microsoft infrastructure in the enterprise, including SharePoint, Lync, Windows Server, IIS, Windows Media Services, Silverlight, and Expression Encoder.

    The team participated in conference panel discussions on topics ranging from mobile delivery to YouTube in the enterprise (videos of those panels coming soon), and IIS Media Services senior product manager Chris Knowlton was recorded doing both an in-booth Expression Encoder / IIS / iPad demo and an on-site interview with Steve Vonder Haar

    Additionally, both Microsoft and Accordent were recipients of Best in Show awards - Expression Encoder was awarded Most Innovative Product and Accordent received Best Enterprise Solution.  Congrats to the team! 

    Microsoft and Accordent recently participated in a webinar to talk about how the companies are addressing the challenges of deploying video in the enterprise.  To view the archived content, please login here.   

  • Expression Encoder

    Microsoft Expression News


    We released important news today about the Expression family of products.  Please visit the Expression Community site for details.

  • Expression Encoder

    Important News for Users of the Microsoft® Silverlight™ Streaming by Windows Live™ Beta



    · Microsoft Silverlight Streaming by Windows Live Beta is being discontinued and will eventually be taken down.

    · A new Windows® Azure™-based hosting and delivery service will be launched by the end of 2009, though this is not a direct replacement for Silverlight Streaming and will have costs associated with its use.

    · You can access, retrieve and if desired remove your content that is hosted on Silverlight Streaming by following the instructions below.

    · Key dates and information about the availability of the new Windows Azure functionality, and when the existing Silverlight Streaming beta service will be taken down, will be communicated in the coming weeks.


    Since May 2007, we have been offering a free beta service to host Silverlight applications and videos. This service is being discontinued to make way for a new Windows Azure-based service. Once this new service is launched, the current Silverlight Streaming beta service will eventually be taken down.

    Don’t panic! All your current content is safe and you will receive sufficient notice for you to make an informed decision on where to host your Silverlight content and applications. However, in the interim, we would like you to be aware of the following:

    · Effective immediately, no new sign-ups are permitted for the Silverlight Streaming service. In addition, the Silverlight Streaming publishing plug-in for Expression Encoder will no longer be available for download.

    · The new Windows Azure functionality will not be a direct replacement for the Silverlight Streaming service and will be a paid subscription service.

    Steps you can take today:

    · You can access all of your content that is hosted on Silverlight Streaming and also view the file system to retrieve your content locally. For complete instructions on how to do this, please refer to the Step by step instructions for retrieving Silverlight Streaming content section below.

    · Stay tuned for more information. Key dates about the new Windows Azure-based functionality, and when the existing service will be taken down will be communicated in the coming weeks.

    · You can learn more about the Windows Azure Platform here.

    If you have additional questions, please contact us at

    Step by step instructions for retrieving Silverlight Streaming content:

    You can directly access the filesystem of the Silverlight Streaming hosting service. This will be the easiest way to retrieve content directly to your computer. In order to do this, you need to know the Account ID and Account Key used to access the filesystem. To get this information, do the following:

    · Open a web browser and connect to

    · Login with your Live ID.

    · Click on Manage Account.

    · You will see your Account ID and Key under the Account Information section at the bottom of the page.

    You can connect to the SLS filesystem in a number of ways:

    1. Map a network drive

    Map to the following network drive, replacing <Account ID> with the numeric Account ID you found by following the steps above.<AccountID>/

    2. Open as a web folder

    · Windows XP, Windows Vista, Windows Server 200 and Windows Server 2003 users must install the latest Software Update for Web Folders.

    · Internet Explorer users: open the web folder by connecting to the following URL, replacing <Account ID> with the numeric Account ID you found by following the steps above:<AccountID>/

    · Other web browsers: copy and paste the following path into the “Run…” box on the Start menu:


    · When prompted for credentials, supply your Silverlight Streaming account information that you found by following the steps in the previous section.

    Note for Vista users:

    For improved performance, disable thumbnails as follows:

    1. Click on the Start button, then choose All Programs followed by Accessories.

    2. Run Windows Explorer.

    3. In Windows Explorer, click on the Organize button on the menu bar.

    4. In the pull-down menu, click on Folder and Search Options.

    5. In the Folder Options dialog window, click on the View tab.

    6. Under the Files and Folders tree heading, ensure that Always show icons, never thumbnails is checked.

    3. Mac OS X users

    In the Finder, choose Go à Connect To Server. In the Server Address field, paste the following address, replacing <Account ID> with the numeric Account ID you found by following the steps above.<AccountID>/

Page 2 of 2 (46 items) 12