
HTTP Pseudo Streaming from IIS
I thought I'd share what I found with regards to Pseudo Streaming from IIS and it's impact on iOS devices.
I've been experiencing issues with iPad/iPhone videos, with the error message "The video could not be loaded, either because the server or network failed or because the format is not supported". I spent some time searching the Internet for this error and found several responses from many other people seeing this.
Initially I thought it was video encoding issues, so I spent a lot of time looking for h.264 supported profile/bitrate/resolution tables from Apple for all of their devices. After recoding from Main 3.2 to Main 3.1 for iPad and Base 3.0 for iPhones, I soon discovered it made no difference. I even downloaded the bunny video from Longtail, which was often suggested, and same result; it would not play.
It turns out, that the problem in my case is with the H264 Streaming Module for IIS 7. I expect the same problem exists with 5/6. I did find in one article that it's known to break iOS devices, but the Apache module works just fine.
Their suggested fix is to create another virtual server in IIS that contains all of the *.mp4 files, and not activate the streaming module. This solution would be fine, but if you're using forced authentication to track who views videos, such as a publicly accessible corporate site with training videos, you're going to have to do some fancy footwork with your coding (assuming you're using .NET, which is why you're using IIS in the first place).
I have no advice yet, but I'll be trying a few alternative ideas to make it work. Duplicating files as *.m4v and altering the jwPlayer code to use *.mp4 for flash and *.m4v for HTML5 might work, but seems ridiculous to have store everything twice. I'm going to also see if there's a neat way for IIS to exclude the module from the execution pipeline, based on client browser settings.
It took me a while to nut this one out, and I'm sure I can't be the only one with this problem. Disabling the module all together, of course, loses you pseudo streaming abilities so people can't seek beyond what's already downloaded, and that's not an option either.
Alex.