我像这样构建电影播放器。。。
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 web流。它打得很好。然后我要一张这样的照片。。。
NSTimeInterval currentInterval = self.mp.currentPlaybackTime;
UIImage *image = [self.mp thumbnailImageAtTime:currentInterval timeOption:MPMovieTimeOptionExact];
我已尝试将currentInterval备份一秒钟。我尝试了两个时间选项(精确和关键帧),但图像始终为零。知道为什么吗?谢谢
我的理解是MPMoviePlayerController
缩略图方法不适用于HTTP直播(HLS)流;仅适用于文件。不幸的是,我找不到权威的参考资料,尽管我在过去几周的某个地方看到或读到了它。我自己也有同样的经历。
也就是说,可以使用AVAssetImageGenerator
为HLS流生成缩略图。
编辑:
我刚刚针对一个常规HTTP文件和通过HLS访问的相同文件测试了AVAssetImageGenerator
。它能够从HTTP生成缩略图,但对于HLS,AVAssetImageGenerator
返回以下错误:
NSLocalizedFailureReason=此介质不支持该操作。
总之,HTTP直播似乎不支持创建缩略图。如果情况允许,您可以在服务器上生成缩略图,将其作为web服务提供,然后从客户端的服务器请求。