我像这样构建电影播放器......
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;
网址指向m3u8网络流。它打得很好。然后我要求这样的图像...
NSTimeInterval currentInterval = self.mp.currentPlaybackTime;
UIImage *image = [self.mp thumbnailImageAtTime:currentInterval timeOption:MPMovieTimeOptionExact];
我已经尝试将currentInterval支持一秒钟。我已经尝试了两种时间选项(精确和关键帧),但图像总是为零。知道为什么吗?感谢。
答案 0 :(得分:6)
我的理解是MPMoviePlayerController
缩略图方法不适用于HTTP直播流(HLS)流;仅适用于文件。不幸的是,我找不到这方面的权威参考,尽管我在过去几周看到或读过它。我自己也有同样的经历。
也就是说,可以使用AVAssetImageGenerator
为HLS流生成缩略图。
修改强>
我刚刚对常规HTTP文件测试了AVAssetImageGenerator
,并且通过HLS访问了相同的文件。它能够从HTTP生成缩略图,但对于HLS,AVAssetImageGenerator
返回了以下错误:
NSLocalizedFailureReason =此媒体不支持该操作。
因此,总而言之,看起来HTTP Live Streaming不支持创建缩略图。如果您的情况允许,您可以在服务器上生成缩略图,使其作为Web服务提供,然后从客户端的服务器请求它们。