0

我像这样构建电影播放器​​......

    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 备份一秒钟。我已经尝试了两种时间选项(精确和关键帧),但图像始终为零。知道为什么吗?谢谢。

4

1 回答 1

6

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

也就是说,可以使用AVAssetImageGenerator.

编辑:

我刚刚测试AVAssetImageGenerator了一个常规的 HTTP 文件,以及通过 HLS 访问的同一个文件。它能够从 HTTP 生成缩略图,但 HLS 的缩略图AVAssetImageGenerator返回以下错误:

NSLocalizedFailureReason=此媒体不支持该操作。

因此,总而言之,HTTP Live Streaming 似乎不支持创建缩略图。如果您的情况允许,您可以在服务器上生成缩略图,将它们作为 Web 服务提供,然后在客户端从服务器请求它们。

于 2012-07-16T16:52:43.383 回答