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:
This document is to complement the original Expression Encoder 4 SP1 GPU Encoding white paper and discuss the changes that SP2 introduced on this subject. The latest service pack includes a major revision of the CUDA H.264 encoder as well as the introduction of Intel Sandy Bridge QSV support, which both will be discussed in depth below.
Please note that an updated performance report for Cuda GPU Encoding as well as a new one for QSV GPU Encoding are available.
To Maximize Performance
As before, we recommend applying the proper GPU for video processing load. We provide below basic guidelines for optimizing your performance using a GPU to encode. Using proper GPU hardware and a conservative "GPU Stream" setting can reduce the chances of maxing out the GPU resources. Another way to reduce the GPU memory footprint is by lowering the "Number of Reference Frames". GPU-Z is a great freeware to monitor the load and memory usage.
To calculate the appropriate number of GPU streams setting for a specific scenario, we also created a simple performance tool. More information is available here.
Finally, since available GPU memory is more important than ever, we recommend closing any other applications to minimize GPU memory usage outside of Encoder.
To Maximize Quality
In collaboration with our partners at Main Concept, a lot of work was done on the CUDA H.264 encoder to optimize the performance of the GPU, as well as improving output quality and adding new encode functionality like true CBR and HRD support. Those changes have significantly impacted its behavior, especially in terms of performance:
In other words, you will experience better quality and less CPU load, at the cost of higher GPU load and some overall performance loss.
Finally, because the CUDA encoder doesn't support 2-pass encodings, they have been disabled. Please note that while Encoder will revert to software encoding if a 2-pass encode is selected, the new 1-pass H.264 VBR encoding options are fully supported in both CUDA and QSV-based encoding.
Recommendations
Because of the new behavior, we now recommend using only higher-end CUDA GPUs for this feature. A rough suggestion would be to get CUDA hardware with a minimum of 200 CUDA cores per HD stream to be encoded via CUDA and at the least 1 GB of video memory (2 GB or more preferred). It means that for encoding a single HD stream on the GPU, at the least a GeForce GTX 550 Ti or Quadro 2000 GPU is recommended, while encoding 2 or more HD streams on the GPU would require at the least a GeForce GTX 570, Quadro 6000 or Tesla C2050 card. As in Encoder SP1, multiple video cards can be used to speed up Smooth Streaming encodes. Note that we also changed our default of number of GPU streams to 2, which can be tweaked to take full advantage of the hardware used.
Since the GPU is taking more of the load, matching the CPU may not be as important for single stream encodes. Because most current CUDA GPUs can't take more that 2-3 HD streams at a time, a powerful CPU is still required for HD Smooth Streaming encodes.
Finally, make sure to install the latest Nvidia drivers available from Nvidia's website here. Note that the GPU driver version is required to be higher than 267.91 for SP2.
What is QSV?
Intel Quick Sync Video (QSV) is a GPU acceleration technology available on some Intel processors that can dramatically increase the speed of transcoding media files. It is available on most 2nd generation i3, i5 and i7 processors (aka "Sandy Bridge"), as well as some newer Xeon CPUs, like the E3-1285. More information about QSV is available on Intel's website. Please note that the newly Sandy Bridge E CPU line (example: i7-3960X) does not have an embedded GPU, and thus does not support QSV.
QSV encoding support has been integrated in Encoder 4 Pro SP2, which can be used in a similar fashion as CUDA encoding to speed up MP4 and H.264-based Smooth Streaming encode operations.
Usage
QSV GPU encoding works the same way than CUDA encoding as explained in the Encoder SP1 GPU Encoding white paper. Because the two GPU-based H.264 encoders behave very differently, Expression Encoder 4 Pro SP2 provides a way to control the number of streams independently between CUDA and QSV, which are defaulting to 2 and 8 respectively (see below). As with CUDA, QSV encoding is turned on by default in the Encoder application and turned off in the SDK.
As for the SDK, the QSV device is enumerated in the H264EncodeDevices.Devices along with the CUDA devices. A new H264EncodeDevice property, DeviceType of type H264DeviceType, provides a way to differentiate between the two GPU types. H264EncodeDevices.MaxNumberGPUStream keeps controlling the number of streams to be encoded by CUDA, while H264EncodeDevices.MaxNumberIntelHDGraphicsStream controls the streams encoded by QSV.
Multi GPU Encoding
Both CUDA and QSV encoding can be used together, either on one multi-stream encode or multiple instances of encoder, which may provide even better performance results. While encoding multiple streams on a PC with both technologies, the streams will be allocated in a snake pattern starting with the Intel GPU (1-2-2-1, 1-2-3-3-2-1) from the highest resolution stream down.
It's worth mentioning that, when used with a discrete GPU, Intel QSV requires the Intel GPU to be enabled as default video adapter in the BIOS and needs to be active and connected to a monitor. Note that LucidLogix Virtu technology, bundled with some Sandy Bridge PCs, enables virtualization of the discrete GPU through the Intel GPU, enabling the usage of both QSV and Cuda and using only one output. More information is available on LucidLogix' website.
Limitations
Like the CUDA implementation, the QSV supports only a subset of encode settings. For instance, those encoding features are not supported:
QSV encoding is not supported on XP.
An active Intel HD Graphics GPU is required to be accessible. This means that:
As with CUDA, QSV encoding is an approximation of what the software-only based encoding can provide. Output quality differences, especially at low bitrates should be expected. Because of this, we recommend using the software H.264 encoder if highest quality results are a priority over higher performance.
The integrated Intel Accelerator 3000 GPU, found in high-end mobile CPUs and in the K line of 2nd generation i5 and i7 based desktops as well as on some Xeon and i3 CPUs, is highly recommended. See the Intel website for more details.
Because memory is shared, we highly recommend having a minimum of 4 GB for single stream encoding and 8 GB or more for Smooth Streaming and/or parallel encoding. Running out of system memory will greatly affect performance.
It is highly recommended to install the very latest drivers directly from the Intel website to ensure best stability and reliability.
While the QSV encoding can take a large load of concurrent streams, it is worth noting that a blend of hardware and software encoding will likely result in better performance in most Smooth Streaming cases.
Known Issues
A few issues were found in the recent sets of Intel drivers currently available. While all of them have been investigated and resolved, some of the fixes didn't make it into the latest drivers, but will be available in the next driver version (ETA early 2012). Here is the short list:
OpenCL and DirectCompute technologies were evaluated but deemed not ready for integration in Expression Encoder 4 Pro SP2. We are planning to continue monitoring them and investigating potential integration in the future.
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:
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 PageExpression Encoder 4 Pro DemonstrationExpression Encoder ForumHow to Use Live Smooth Streaming Article
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.
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.
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 http://www.smoothhd.com 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 https://content.visitmix.com/2009/sessions/?categories=Media 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
SmoothMBRCalc
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
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:
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 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:
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 Pixela ImageMixer 3 SE registers all the required DirectShow components required by Expression Encoder upon it's installation.
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:
We are hoping to further enhance the AVCHD workflow in future versions of Expression Encoder.
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.
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.
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.
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.
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.
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:
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:
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.
Hi everyone, we just posted a publish plugin to upload your output directory to the new SharePoint 2010 Asset libraries. Check it out:
http://gallery.expression.microsoft.com/en-us/EESharePointPlugin?SRC=Home
jamie
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);
file.CalculateDuration(null);
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.
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)
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:
http://msdn.microsoft.com/en-us/library/ms791558.aspx
http://support.microsoft.com/kb/291988
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: http://bilbrobloggins.com/wow64/hidden-secrets-of-w0w64-ndash-large-address-space/
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:
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.
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" height="480" src="smoothApple.isml/manifest(format=m3u8-aapl)" poster="MyPosterFrame.png" autoplay="true" 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.
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.
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:
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.
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:
;C:\Program Files (x86)\QuickTime\QTSystem\ (For a 64-bit environment) or ;C:\Program Files\QuickTime\QTSystem\ (For a 32-bit environment)
;C:\Program Files (x86)\QuickTime\QTSystem\ (For a 64-bit environment)
or
;C:\Program Files\QuickTime\QTSystem\ (For a 32-bit environment)
Thanks to everyone that voted for us in the Streaming Media Readers' Choice Awards! We are a finalist in the Encoders under $1000 category.
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.
We released important news today about the Expression family of products. Please visit the Expression Community site for details.
Summary:
· 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.
Background:
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 slsfbk@microsoft.com.
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 http://silverlight.live.com
· 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.
https://silverlight.services.live.com/<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:
· Other web browsers: copy and paste the following path into the “Run…” box on the Start menu:
\\silverlight.services.live.com@SSL\DavWWWRoot\<AccountID>\
· 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.