John Deutscher has written a blog on how to set up Apple HTTP Live Streaming with IIS Media Services. The purpose of this blog is to discuss some issues you may encounter in setting up HLS with IIS Media Services 4.1.

HLS Fails When HLS Assets Are Stored on NAS

HLS fails if you use IIS Media Services 4.1 in the following scenario

  1. Use IIS Media Services (version 4.1.0938.454 or prior) on origin for delivering HLS on-demand contents to iOS devices and/or
    Mac OS X PCs;
  2. On-demand HLS contents are stored on a NAS product. In practice this is almost always the case.
  3. NAS access requires authentication as configured in IIS (as shown in the screen shot below).

 

The symptoms are:

  • Even if smooth streaming on-demand assets and HLS on-demand assets share the same NAS and use the same NAS credential, smooth streaming works fine but HLS does not.
  • If you try to use iPhone to play the on-demand HLS asset, you will get the following error: 
     

  •  If you use Mountain Lion (OS X v10.8) to test, video does not play, without error message.

  • If you look at IIS Media Services server Event Log, you will see the following error: “500 - Internal server error. There is a problem with the resource you are looking
    for, and it cannot be displayed.
  • If you use Fault Request Tracing and set up rule for capturing 500-status code, you will see “Logon failure: unknown user name or bad password (0x8007052e).”

However, in the case of “Logon Failure” error, you will see the following error: 500 - Internal server error. There is a problem with the resource you are looking for, and it cannot be displayed. Even though requests for HLS fragments will fail, requests for client manifests will succeed. This applies to both of the
following two URL formats: http://server/origin/asset.ism/manifest(format=m3u8-aapl), or http://server/origin/asset.ism/manifest(format=m3u8-aapl).m3u8.

  • This issue occurs only for HLS assets hosted on NAS. It works fine if you host an HLS asset on server local disk.

This issue has been fixed in the upcoming release of IIS Media Services 4.1 (version 4.1.0938.455 and later). IIS Media Services 5 Premium does not have this issue.

 

Use the Right Version of iOS or Mac OS X Client to Test

Needless to say, we should make sure we use a client which supports HLS to test. Here is some basic info on HLS Support on iOS and Mac OS X.

iPhone and iPod Touch support HLS since iOS v3.0, and iPad supports HLS since iOS v3.2. The iPad was introduced with iPhone OS 3.2, later updated to 3.2.2, a version made specifically for the iPad.

HLS is supported on Safari on Mac through QuickTime X (10). According to http://en.wikipedia.org/wiki/Quicktime_7, QuickTime X is only available on Mac OS X v10.6 (Snow Leopard) and later, not on Mac OS X v10.5 (Leopard) or prior. The following table lists recent Mac OS X versions and corresponding code names:

Mac OS X Version

Code Name

Release Date

v10.5

Leopard

10/26/2007

v10.6

Snow Leopard

08/28/2009

v10.7

Lion

07/20/2011

v10.8

Mountain Lion

07/25/2012

QuickTime X is also only available as part of Snow Leopard—there’s no way to upgrade your version of QuickTime in Leopard or other OS.

QuickTime 7 is also used on Mac for media functions that are not yet available in QuickTime X. On Windows, QuickTime 7 is available but not QuickTime X. So Safari on Windows does not support HLS.

Further HLS requirements and recommendations can be found at Apple site.

You can verify whether your iOS devices or Mac OS X PC is equipped for HLS by running the following test HLS asset hosted by Apple: http://devimages.apple.com/iphone/samples/bipbopall.html  (http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 )
 

The sample streams at multiple data rates. The stream starts with sample 1 and switches to the fastest sample the connection supports.