Search code examples
iphoneiosmpmovieplayercontrolleravplayer

How to play movie files with no file extension on iOS with MPMoviePlayerController or AVPlayer?


I want to play a movie in iOS 4.3 on the iPad. I've successfully used MPMoviePlayerController and AVPlayer to load files from a remote URL when the filename has a file extension. However, when I use a CDN that doesn't return the filename (just an un-guessable random name), neither MPMoviePlayerController or AVPlayer seem to be able to cope.

Is there a way to tell either player that it really is a movie of type x and it should just get on playing it?

MPMoviePlayerController will return the following error from it's changed state notification:

{
    MPMoviePlayerPlaybackDidFinishReasonUserInfoKey = 1;
    error = "Error Domain=MediaPlayerErrorDomain Code=-12847 \"This movie format is not supported.\" UserInfo=0x5b60030 {NSLocalizedDescription=This movie format is not supported.}";
}

I know that file is a valid m4v file, as when I rename it all is fine.


Solution

  • If the player can't guess the file format you need to check that the CDN sends the right mime type back. My guess is that your CDN can't guess the mimetype correctly nor can the player.

    In most cases this is due to how the CDN presents the HTTP header. Check that the "Content-Type" header is set to a video format matching your content.