Posted 3/4/2008 5:39:00 AM. 0 comments
Just arrived in Las Vegas to attend (and speak at) Mix. Picked up an interesting post from Miguel on Moonlight (AKA Silverlight on Linux) where he talks about recent progress made as well as some of the emerging architecture behind media support on Moonlight (oh, and the availability of some installers.. put your compiler away!).
His post also hilights the fact that we (Microsoft) have just released the specification for the Windows Media HTTP Streaming protocol under the new Open Protocol Initiative which will be an interesting bedtime read at some point for those interested in streaming.
If you are here at Mix, check out his session on Thursday which is sure to rock.
As an Eagle-eyed anonymous commented noted, on December 12th the CODEC team made the VC-1 encoder SDK available for download:
The Microsoft VC-1 Encoder SDK - Professional is designed to provide file-based and/or real-time encoding capability to general content creation toolsets or dedicated encoding software applications.
Optimizations and features include:
• Can output VC-1 Elementary Streams for delivery in HD Optical Disc applications
• Performance improvements over the Windows Media FSDK11 for the latest generation of processors from Intel and AMD
• Perceptual quality improvements over the Windows Media FSDK11
• Ability to control all advanced settings programmatically through the API (no registry key settings required)
• Native Hardware Acceleration API support
Since I'm not on the CODEC team, I can't comment further on this although I'm sure Alex or Ben will jump in and give us an update on this.
Posted 9/5/2007 5:15:00 PM. 13 comments
Today the Expression Encoder team is releasing Expression Encoder v1.0 (the product formerly known as Expression Media Encoder). It is a proud moment for us since we are the first Microsoft product group to ship an application targeting the Silverlight platform.
Owners of both Expression Studio as well as Expression Media can use their product keys to unlock the RTM release. The same download will work as a 180 day trial from:
http://www.microsoft.com/expression/products/download.aspx?key=encoder
For those that have played with the preview release, I've compiled a list of new stuff to look out for.
There are a few more goodies coming out to support the release over the next couple of weeks that I'll be reporting here.
What's New in Expression Encoder RTM:
Live encoding. We've demoed the live encoding functionality but this was not included in the public preview of xEncoder. Today you can get your hands on this. Live encoding mode lets you stream from webcams, and file sources direct to file archive and live network stream. In addition to what was shown previously, we've added:
Live Script Commands: Script commands are interactivity triggers that are embedded in the ASF container. A script command is basically a script pair combined with a timestamp that is stored either in the header or a separate stream. When Silverlight opens and plays a file containing Script commands, the <MediaElement> XAML tag will fire a MarkerReached event at each marker point. This is true for both file-based playback as well as live streams. Based on Javascript event handlers, the player can therefore trigger animations and custom behaviors.
In the public preview of xEncoder, it was possible to embed these interactivity triggers into files during offline encodes. This is/was how we implement close caption support (since baseplayer.js which powers all of our templates knows what to do when it encounters MarkerReached with the type field set to Caption).
Since Silverlight also supports Script commands in live streams we added the ability to trigger these as part of a live encode.
"Let me start streaming" In-place Wizard UI: A number of internal users gave us feedback that it was hard to figure out what needed to be configured to start up a live stream. To address this and avoid the need for a separate, wizard based UI we came up with the idea of an in-place wizard which shows the necessary steps and hilites the related UI when the user clicks on the hyperlinks.
Output audio level meters: In a typical production encoding environment it is essential to be able to visualize audio.
Enhanced Live UI Layout: We performed a number of iterations on the Live UX in Expression Blend with our designer; one of the advantages of being a WPF application. The result is hopefully a big improvement over what we had before.
Error Clip / Frame count: Show a diagnostic frame count for sources and outputs. Pick a source to roll over to if an error occurs on the current source (eg a webcam is unplugged).
Publishing Plugin Model: We wanted to add content publishing to xEncoder in an extensible way. To this end, we've actually added an extensibility model which enables 3rd parties to author publishing plugins. An MSDN article will be appearing on this shortly. We also showed this in action in the Channel 9 Video.
De-interlacing: If you are encoding footage from a DV or HDV camera that is interlaced, xEncoder will automatically de-interlace before encoding. It will detect the interlaced flag in VIH2. We also detect interlaced content coming from Quicktime sources.
Smart recompression: (Source Profile): This is one of my favorite features. It enables you to take a pre-existing WMV file and selectively re-encode certain streams whilst passing through/copying others. This means that you could take a 720p source with 5:1 audio (the latter of which is not supported by Silverlight 1.0) and create a new file by re-encoding only the audio and just copying the video samples through. In another example, you could take a video you already encoded and copy both audio and video streams rewriting just markers and or script commands. In both of these examples, the encode duration would be small because stream copying is much quicker than re-encoding.
To assist the user, we've also added a warning flag that shows when another encoding setting would prevent this feature from working correctly:
Note that currently, if you trim the file at all you will not be able to use Source Profile.
Non-square pixel output: One of the primary reasons we added non-square pixel output was to enable the HD audio only re-encode scenario mentioned above.
We also show the pixel aspect ratio of the source clip:
Still Image leader / trailer / Filesource: You can use a still image eg a JPEG or PNG both as a leader / trailer in the offline encoder as well as a file source in the live encoder.
ASF Packet Size: Based on customer feedback, we added the ability to customize the size of ASF packets for both offline and live encoding.
AVI Synth support: AVISynth is a tool popular within the video community. From their website:
AviSynth is a powerful tool for video post-production. It provides almost unlimited ways of editing and processing videos. AviSynth works as a frameserver, providing instant editing without the need for temporary files.
AviSynth itself does not provide a graphical user interface (GUI) but instead relies on a script system that allows advanced non-linear editing. While this may at first seem tedious and unintuitive, it is remarkably powerful and is a very good way to manage projects in a precise, consistent, and reproducible manner. Because text-based scripts are human readable, projects are inherently self-documenting. The scripting language is simple yet powerful, and complex filters can be created from basic operations to develop a sophisticated palette of useful and unique effects.
Based on customer feedback, Expression Encoder 1.0 now supports .avs as an input type.
Pause encoding: Again, we put this in based on customer feedback. Whilst in the middle of a lengthy encode, it is sometimes handy to be able to pause the encode in order to regain the CPU on your encoding box for another task. Once complete, you can resume the encode.
Save job As: We have a dirty flag for jobs
Script commands in header or stream: In live scenarios, script commands are always in a separate stream although since we now automatically import script commands from both the header and an script streams, it is possible to re-write commands from stream to header and vice versa
VBR Audio: We missed this from the public preview and Ben Waggoner gave us a really hard time.
Failed job restart by clicking encode: In the public preview of Expression Encoder if a job failed because, for example, the input file was missing, the only way to re-attempt processing was to rest the job. Unfortunately, resetting the job caused all of the encoding settings to be returned to their defaults. In the release version, if a job fails you can retry it simply be clicking encode again.
Because of this more intuitive behavior as well as strong words from Dr Sneath who had a somewhat sleepless night as a result of our first design, we've removed the Reset button from the UI (it is still available from the Media Content context menu as well as the Edit menu).
Metadata in templating engine: The Silverlight output the Expression Encoder generates comes out as the result of a string replacement engine that is somewhat similar to ASP.NET. You can find out more about the templating engine in the built in help. One of the things missing from this in the preview was the ability to output metadata which is a common scenario. See the help for more info on this.
Updated encoding profiles: We tweaked some of the encoding defaults based on user feedback. We also changed the naming scheme to use the (AP) and (MP) suffix to indicate VC-1 Advanced Profile and Main Profile respectively.
Toggle marker properties on and off for all markers: Quickly turn key frames or thumbnails on or off for all markers.
Keyboard accelerators
Integrated Help: Including a section on how to take a Silverlight player and turn it into an Expression Encoder template.
Profile/Source/Custom output size: We provide encoding dimensions within the profile in order to a) give an indication of the video dimensions that the desired bitrate is intended for and b) specify dimensions for device profiles. We took the decision not to offer each of these for both 4:3 and 16:9 profiles; instead we added a selector to the Size pane within Video Profile. This enables you to select between Profile (dimensions specified in the profile), Source (dimensions of the input clip) or Custom. If you pick custom in conjunction with Maintain Aspect Ratio, your output will be approximately correct for the bitrate whilst matching the input aspect ratio.
Reg key to enable XML diagnostic: One of the advantages of Expression Encoder is that it is based on DirectShow and thus can cater to a large number of input formats. The XML diagnostic regkey allows us to diagnose problematic filters more easily:
HKCU or HKLM SOFTWARE\Microsoft\Expression\Encoder DWORD value SaveDiagnosticInfo. Set it to non zero.
App rename: If you have done any work with the command line encoding feature of the public preview, you'll want to make a note that you now need to run encoder.exe, not mediaencoder.exe
Error codes are shown in Activity log.
So that is my list. I'm sure there's stuff I've missed.
Please do keep the feedback coming; we are already some way into planning the next release and listening intently.
Check out our forums here: microsoft.public.expression.mediaencoder
Posted 5/10/2007 6:41:00 PM. 1 comments
I've posted about this before but I figured its worth a new mention now that the Expression Media Encoder preview is out in the wild.
If you care about encoder output quality from any application that uses the Windows Media DMO, you need to get the latest v11 version of the codec, by either 1) upgrading to Vista 2) install Windows Media Player 11 on XP 3) install the Format SDK 11.
Once installed, be aware that the v11 codec has a ton of hidden goodness which needs unlocking. To do this, go over here and grab Alex Zambelli's excellent powertoy. This tool knows all of the hidden registry settings for altering encoding complexity, turning on advanced deblocking and a ton of other goodness. The tool also has great tooltips which explain what each feature does eg:
Once you've done that, make sure you read these articles (linked from Alex's site):
And finally, subscribe to Ben Waggoner's blog here: http://on10.net/blogs/benwagg/
