2012-07-16 71 views
0

我打造的电影播放这样的...的MPMoviePlayerController thumbnailImageAtTime:timeOption:简单的情况下不能正常工作

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    player.view.frame = myView.bounds; 
    player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    [player prepareToPlay]; 

    [myView addSubview:player.view]; 
    self.mp = player; 

该URL指向的网页M3U8流。它玩的很好。然后我要求一个这样的图像...

NSTimeInterval currentInterval = self.mp.currentPlaybackTime; 
UIImage *image = [self.mp thumbnailImageAtTime:currentInterval timeOption:MPMovieTimeOptionExact]; 

我试过将currentInterval支持一秒钟。我已经尝试了两个时间选项(确切和关键帧),但图像始终为零。任何想法为什么?谢谢。

回答

6

我的理解是,MPMoviePlayerController缩略图方法不适用于HTTP实时流(HLS)流;仅用于文件。不幸的是,我找不到这方面的权威性参考资料,尽管在过去几周里我看到或读过它。我自己也有同样的经历。

也就是说,可能使用AVAssetImageGenerator为HLS流生成缩略图。

编辑:

我刚刚测试AVAssetImageGenerator对一个普通的HTTP文件,并在HLS访问同一个文件。它能够产生从HTTP一个缩略图,但对于HLS之一,AVAssetImageGenerator返回以下错误:

NSLocalizedFailureReason=The operation is not supported for this media.

因此,简言之,它看起来好像HTTP实时流不支持创建缩略图。如果您的情况允许,您可以在服务器上生成缩略图,将它们作为Web服务提供,然后从客户端的服务器请求它们。

+0

坏消息,但一个很好的答案。谢谢。 – danh 2012-07-18 21:39:42

+0

@Martin我不得不采取缩略图web服务的方式。我们的分段器必须每隔10秒产生一个缩略图,它看起来不错,但它不是我寻找的精度。问候 – javiergov 2012-09-12 14:24:38

+0

好的回答.... – 2013-01-30 12:06:49