MPMoviePlayerController thumbnailImageAtTime:timeOption:简单的情况不起作用

dan*_*anh 0 iphone mpmovieplayercontroller ios

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

    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;
Run Code Online (Sandbox Code Playgroud)

该url指向m3u8网络流.它打得很好.然后我要求这样的图像......

NSTimeInterval currentInterval = self.mp.currentPlaybackTime;
UIImage *image = [self.mp thumbnailImageAtTime:currentInterval timeOption:MPMovieTimeOptionExact];
Run Code Online (Sandbox Code Playgroud)

我已经尝试将currentInterval支持一秒钟.我已经尝试了两种时间选项(精确和关键帧),但图像总是为零.知道为什么吗?谢谢.

Mar*_*nny 6

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

也就是说,可以使用生成HLS流的缩略图AVAssetImageGenerator.

编辑:

我刚刚AVAssetImageGenerator对常规HTTP文件进行了测试,并且通过HLS访问了相同的文件.它能够从HTTP生成缩略图,但对于HLS版本,AVAssetImageGenerator返回了以下错误:

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

因此,总而言之,看起来HTTP Live Streaming不支持创建缩略图.如果您的情况允许,您可以在服务器上生成缩略图,使其可用作Web服务,然后从客户端的服务器请求它们.