I'm trying to stream a small .mp4 movie from my app to an iPhone, and can't avoid getting a "This Movie Could Not Be Played" error in the iPhone movie player. This is by simply providing an HTML link to the content (I've also tried embedding using "<object>" tags with no more success). I've narrowed it down to something (not sure what) with what's being served by the Google Frontend webserver. My findings:
- There is no question about the movie being iPhone-compatible. Not only does it play in the iPhone's iPod app after synching with iTunes, but it will play fine from iPhone Safari if I host the exact same file on an IIS web server (more on that below). - Behavior is the same whether I use a static .mp4 file (size is less than 1MB) or serve raw data from a request handler in my Python code from a blob object. The static .mp4 is just for testing purposes; in production I'll be using the latter method, which also seems to give me more flexibility in setting response headers anyway (once again, more below). - The media content, whether static or served from the blob field, serves fine to Safari on a good old Mac desktop (or on any desktop browser I've tried). - I've cleared my cache in iPhone Safari as one last sanity check. Now, as for web servers and response headers. As stated above, everything works if I host the static file on an IIS server. According to http://www.askapache.com/online-tools/http-headers-tool/, the response headers from IIS are as follows: HTTP/1.1 200 OK Date: Sun, 11 Jan 2009 14:17:24 GMT Server: Microsoft-IIS/5.0 X-Powered-By: ASP.NET Content-Type: video/mp4 Accept-Ranges: bytes Last-Modified: Sun, 11 Jan 2009 02:22:18 GMT ETag: "029d46c9373c91:1a9f" Content-Length: 749736 Via: 1.1 <host name redacted> Connection: close The response headers for the static file from Google Frontend are: HTTP/1.1 200 OK Date: Sun, 11 Jan 2009 15:25:50 GMT Expires: Tue, 10 Feb 2009 15:25:50 GMT Content-Type: video/mp4 Server: Google Frontend Content-Length: 749736 Connection: Close Serving the data directly from a request handler, I can modify the response headers a little better, but still the same behavior on the iPhone: HTTP/1.1 200 OK Content-Type: video/mp4 Accept-Ranges: bytes Cache-Control: none (also tried "public", "private", and setting a high max-age value) Date: Sun, 11 Jan 2009 15:01:03 GMT Server: Google Frontend Content-Length: 749736 Connection: Close This is as close as I can get the response headers to what I get from the IIS server, and whatever differences there are don't seem that relevant as far as I can tell. I could just as easily post this on an Apple forum to find out just what it is that makes the iPhone so fussy, but wondering if anyone intimately familiar with Google Frontend and serving media files might know a little bit about what's going on behind the scenes that could cause this. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---
