IIS Media Services 4.1 released!

A new release of IIS Media Services is available that adds support for REST services API's for management of publishing points as well as performance improvements for both on demand and live scenarios. Full details on how to take advantage of the performance improvements will be detailed in a later blog post.  Capabilities supported via the REST services include the following:

  • Creation & deletion of publishing points
  • Enumeration of all web site publishing points
  • Querying and updating publishing point settings and state
  • Querying publishing point statistics

See MSDN for full documentation on these API's.

Expression Encoder 4 SP2 which was just released last week makes use of the REST API's supported in IIS Media Services 4.1 so that one can easily manage publishing points directly from within Expression Encoder. From a Live Broadcasting Project you can now:

  • Create a new publishing point
    • When the name for a new publishing point is specified, Expression Encoder now provides a create button allowing one to easily create the new publishing point as illustrated below.

                   

  • Restart a publishing point either manually or automatically
    • After you have connected to an existing publishing point the UI will expose both a restart button and a checkbox to force a publishing point to be restarted when a broadcast is sent to it.

                   

  • Clone the settings from one publishing point to another using the UI illustrated below.

         

This part of Expression Encoder actually provides significantly more capabilities then the ability to just clone settings from one publishing point to another.  After you connect to IIS media Services 4.1, the copy settings drop-down list control contains a complete enumeration of all publishing points associated with the web site. When you move your mouse pointer over the URL for the publishing point, basic settings for the publishing point are revealed as illustrated below.

  • See the status for individual publishing points
    • The following illustrates a publishing point which is in the starting state.

Note that the ability to use the REST services supported in IIS Media Services 4.1 is only supported in the Pro version of Expression Encoder 4.

All calls to the REST services are authenticated through the authentication methods supported by IIS. So to get started one of the supported IIS authentication methods must first be enabled on the server on which you have installed IIS Media Services 4.1.  Any of the authentication methods supported by IIS except for anonymous authentication can be used. An easy way to test out the full capabilities of the REST services is to use the free Fiddler web debugging proxy tool in conjunction with using the UI in Expression Encoder. The following shows an example of the response body sent back as a result of an HTTP GET request of http://akucer-server/the first concert.isml/settings from Expression Encoder. This request returns the settings for "the first concert.isml" publishing point.

<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
  <id>http://akucer-server:80/the first concert.isml/settings</id>
  <author>
    <name />
  </author>
  <updated>2011-11-09T03:19:30Z</updated>
  <link href="http://akucer-server/the first concert.isml/settings" rel="self" type="application/atom+xml" title="Settings" />
  <link href="http://akucer-server/the first concert.isml/state" rel="related" type="application/atom+xml" title="State" />
  <link href="http://akucer-server/the first concert.isml/statistics" rel="related" type="application/atom+xml" title="Statistics" />
  <content type="application/xml">
    <SmoothStreaming xmlns="http://schemas.microsoft.com/iis/media/2011/03/streaming/management">
      <Settings>
        <Title />
        <SourceType>Push</SourceType>
        <AutoStart>false</AutoStart>
        <AutoRestartOnEncoderReconnect>false</AutoRestartOnEncoderReconnect>
        <LookAheadChunks>2</LookAheadChunks>
        <Archive enabled="true">
          <Path useEventIdOnPath="false" />
        </Archive>
        <ClientConnections enabled="true">
          <ClientManifestVersion>2.0</ClientManifestVersion>
        </ClientConnections>
        <ServerConnections enabled="true">
          <SendEndOfStreamOnStop>true</SendEndOfStreamOnStop>
        </ServerConnections>
        <Modules>
          <Module id="hls" type="sink" name="HTTP Live Streaming">
            <HLS>
              <SegmentLength>PT10S</SegmentLength>
              <MaxBitRate>1600000</MaxBitRate>
              <AllowCaching>false</AllowCaching>
              <BackwardCompatible>true</BackwardCompatible>
              <IncludeCodecs>false</IncludeCodecs>
              <Encryption enabled="false" />
            </HLS>
          </Module>
        </Modules>
      </Settings>
    </SmoothStreaming>
  </content>
</entry>

Note that additional URL's are returned in the above request that can be used to retrieve the publishing point state or statistics. By using the request builder functionality in Fiddler you can easily handcraft an HTTP request that makes use of any of the REST Services APIs. The following is an example of Fiddler being used to send an HTTP GET request to enumerate all the publishing points on the web site.

Before executing this request, make sure that in IIS you have enabled Windows Authentication and that the "Automatically Authenticate" option is set from the options tab in Fiddler to enable Fiddler to automatically respond to authentication challenges using your current Windows credentials.

The following shows an example of the response body sent back for this request.

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name></name>
  </author>
  <title>Publishing Point Collection</title>
  <updated>2011-11-09T04:13:21.505Z</updated>
  <entry>
    <id>http://akucer-server:80/new publishing point.isml/settings</id>
    <updated>2011-11-09T02:57:17Z</updated>
    <link href="http://akucer-server/new publishing point.isml/settings" rel="related" type="application/atom+xml" title="Settings" />
    <link href="http://akucer-server/new publishing point.isml/state" rel="related" type="application/atom+xml" title="State" />
    <link href="http://akucer-server/new publishing point.isml/statistics" rel="related" type="application/atom+xml" title="Statistics" />
  </entry>
  <entry>
    <id>http://akucer-server:80/the final concert.isml/settings</id>
    <updated>2011-11-09T02:23:03Z</updated>
    <link href="http://akucer-server/the final concert.isml/settings" rel="related" type="application/atom+xml" title="Settings" />
    <link href="http://akucer-server/the final concert.isml/state" rel="related" type="application/atom+xml" title="State" />
    <link href="http://akucer-server/the final concert.isml/statistics" rel="related" type="application/atom+xml" title="Statistics" />
  </entry>
  <entry>
    <id>http://akucer-server:80/the first concert.isml/settings</id>
    <updated>2011-11-09T03:19:30Z</updated>
    <link href="http://akucer-server/the first concert.isml/settings" rel="related" type="application/atom+xml" title="Settings" />
    <link href="http://akucer-server/the first concert.isml/state" rel="related" type="application/atom+xml" title="State" />
    <link href="http://akucer-server/the first concert.isml/statistics" rel="related" type="application/atom+xml" title="Statistics" />
  </entry>
  <entry>
    <id>http://akucer-server:80/the second concert.isml/settings</id>
    <updated>2011-11-09T02:22:44Z</updated>
    <link href="http://akucer-server/the second concert.isml/settings" rel="related" type="application/atom+xml" title="Settings" />
    <link href="http://akucer-server/the second concert.isml/state" rel="related" type="application/atom+xml" title="State" />
    <link href="http://akucer-server/the second concert.isml/statistics" rel="related" type="application/atom+xml" title="Statistics" />
  </entry>
</feed>

1 Comment

  • I am unable to restart the publishing point on the server from EE 4 SP2. I see the button to restart, but clicking on it gives me unauthorized error 401. The publishing point requires authentication, and that part is working with an authenticated username/passsword. It's the restart part that's giving error. Any suggestion where I can look? I can send you more info if necessary. Thanks.

Comments have been disabled for this content.