What's new in version 4 SP1

Note

This topic introduces the new features added in the Microsoft Expression Encoder 4 Service Pack 1 (SP1) release, and is intended for users already familiar with the API changes and improvements in Expression Encoder 4. If you are upgrading from Microsoft Expression Encoder 3 or earlier, or if you need to become familiar with the changes in Expression Encoder 4, then you should also see What's new in version 4 for more information.

The Expression Encoder 4 SP1 Software Development Kit (SDK) has been refined to take advantage of the following new features introduced in Expression Encoder 4 SP1:

  • Screen capture as a live source (unlimited capture time in all Expression Encoder Pro builds; ten-minute capture limit on non-Pro versions).

  • IIS Live Smooth Streaming captions (Expression Encoder Pro only).

  • Simultaneous push and pull broadcasting in a Live Broadcasting Project.

  • CUDA GPU-encoding support (Expression Encoder Pro only).

  • Ability to specify a Content Key when you add DRM to your job (Expression Encoder Pro only).

  • HE-AAC audio codec (Expression Encoder Pro only).

Accessing these new features through the SDK

Here are some examples of how to access these new features.

  • Live screen capture   Screen capture will show up in the list of live devices given from:

    EncoderDevices.FindDevices(EncoderDeviceType.Video);
    

    The device is usually at index 0 but can be found by iterating through the list and looking for the device named "Screen Capture Source".

  • IIS Smooth Streaming captions   Using captions or script commands in a Live Broadcasting Project was supported in the previous version, but not with Smooth Streaming. That functionality has now been added, where in previous versions, the code below would throw an exception.

    using (LiveJob job = new LiveJob())
    {
        job.ApplyPreset(LivePresets.H264IISSmoothStreaming480pStandard);
        ScriptCommand script = job.AddScriptCommand("caption", "Use Live Encoding!");
    
        // Setup up sources, output, etc. and start live encoding job.SendScriptCommand(script);
    }
    EncoderDevices.FindDevices(EncoderDeviceType.Video);
    
  • Simultaneous Push/Pull broadcasting   This functionality was added to allow for both broadcasting to a server and allowing other clients to poll the encoding machine directly. Both were supported in the previous version, but would throw an exception if you added them both to the job when it began encoding.

    using (LiveJob job = new LiveJob())
    {
        PushBroadcastPublishFormat push = new PushBroadcastPublishFormat()
        {
            PublishingPoint = new Uri("http://publishingpoint.com")
        };
        job.PublishFormats.Add(push);
        PullBroadcastPublishFormat pull = new PullBroadcastPublishFormat()
        {
            BroadcastPort = 8090
        };
        job.PublishFormats.Add(pull);
    }
    
  • CUDA support   GPU-accelerated encoding is "off" by default when using the SDK. It only is supported for H.264 encoding and its performance gains are most apparent when you are encoding multiple streams.

    H264EncodeDevices.EnableGpuEncoding = true;
    
  • Using a content key when encoding with DRM   Using a content key for DRM is just another way to enable digital rights management for your content. At the SDK level it operates at the same way as using a KeySeed. The KeyID and LicenseAcquisitionURL must still be set along with the 24-character ContentKey itself. In a Live Broadcasting Project, it must be applied at the job level, otherwise it is set on the media item.

    using (LiveJob job = new LiveJob())
    {
        job.Drm = new Drm()
        {
            ContentKey = "AQIDBAUGBwgJCgsMDQ4PEA==",
            KeyId = new Guid(),
            LicenseAcquisitionUrl = new Uri("https://www.contoso.com")
        };
    }
    
    using (Job job = new Job())
    {
        MediaItem media1 = new MediaItem(@"c:\video.wmv");
        media1.Drm = new Drm()
        {
            ContentKey = "AQIDBAUGBwgJCgsMDQ4PEA==",
            KeyId = new Guid(),
            LicenseAcquisitionUrl = new Uri("https://www.contoso.com")
        };
    }
    
  • HE-AAC audio codec   This new codec enables you to encode to the HE-AAC audio profile. This profile is more efficient and is meant for use with mobile devices.

    using (LiveJob job = new LiveJob())
    {
        job.OutputFormat = new MP4OutputFormat() { AudioProfile = new AacAudioProfile() { Level = AacLevel.AacHELevel2 } };
    }
    
    using (Job job = new Job())
    {
        MediaItem media1 = new MediaItem(@"c:\video.wmv");
        media1.OutputFormat = new MP4OutputFormat() { AudioProfile = new AacAudioProfile() { Level = AacLevel.AacHELevel2 } };
    }
    

See also

Concepts

Getting started

   © 2011 Microsoft Corporation. All rights reserved.