如何在iOS上使用MPMoviePlayerController或AVPlayer播放没有文件扩展名的电影文件?

Mic*_*ael 25 iphone mpmovieplayercontroller ios avplayer

我想在iPad上播放iOS 4.3中的电影.当文件名具有文件扩展名时,我已成功使用MPMoviePlayerController和AVPlayer从远程URL加载文件.但是,当我使用不返回文件名的CDN(只是一个不可猜测的随机名称)时,MPMoviePlayerController或AVPlayer似乎都无法应对.

有没有办法告诉任何一个玩家它真的是一个x型电影,它应该继续播放它?

MPMoviePlayerController将从其更改的状态通知返回以下错误:

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

我知道该文件是一个有效的m4v文件,因为当我重命名它时一切都很好.

And*_*nko 9

文件在tmp

NSString* _filePath
Run Code Online (Sandbox Code Playgroud)

创建符号链接

NSFileManager *filemgr = [NSFileManager defaultManager];
NSString *slink = [_filePath stringByAppendingPathExtension:@"m4v"];
if (![filemgr fileExistsAtPath:slink]) {
    NSError *error = nil;
    [filemgr createSymbolicLinkAtPath:[_filePath stringByAppendingPathExtension:@"m4v"] withDestinationPath: _filePath error: &error];
    if (error) {
        ...
    }
}
...
Run Code Online (Sandbox Code Playgroud)

通过slink播放视频

  • 小心.当应用输入背景时,SymbolicLink将被删除:( (2认同)
  • 这仅适用于本地文件。该问题询问没有文件扩展名的远程 URL。 (2认同)

Mag*_*nus 5

如果播放器无法猜测文件格式,您需要检查 CDN 是否发送回正确的 mime 类型。我的猜测是您的 CDN 无法正确猜测 mimetype,播放器也无法正确猜测。

在大多数情况下,这是由于 CDN 呈现 HTTP 标头的方式。检查“Content-Type”标题是否设置为与您的内容匹配的视频格式。

  • 我的服务器正在返回内容类型 video/mp4,我的文件也是具有 H.264 编码的有效 mp4 文件,但 AVPlayer 无法在没有文件扩展名的情况下播放它。这是五年后的 Swift 3。有什么想法可能是错误的吗? (3认同)