在 iOS 5.0+ 中获取捕获视频的第一帧

发布于 2024-12-26 02:49:35 字数 479 浏览 1 评论 0原文

我的应用程序曾经能够使用下面的代码获取第一个视频帧 - 适用于 iOS 4.0+。但是一旦我的设备升级到iOS 5.0.1,返回的图像总是NULL。

+(UIImage *)fFirstVideoFrame:(NSString *)path
{
    MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] 
             initWithContentURL:[NSURL URLWithString:path]];
    UIImage *img = [mp thumbnailImageAtTime:0.0 
             timeOption:MPMovieTimeOptionNearestKeyFrame];
    [mp stop];
    [mp release];
    return img;
}

有谁知道如何在 iOS 5.0+ 中获取视频帧?谢谢。

My app used to be able to get the first video frame using the code below - works for iOS 4.0+. But once my device is upgraded to iOS 5.0.1, the returned image is always NULL.

+(UIImage *)fFirstVideoFrame:(NSString *)path
{
    MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] 
             initWithContentURL:[NSURL URLWithString:path]];
    UIImage *img = [mp thumbnailImageAtTime:0.0 
             timeOption:MPMovieTimeOptionNearestKeyFrame];
    [mp stop];
    [mp release];
    return img;
}

Does anyone know how to get video frames in iOS 5.0+? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

机场等船 2025-01-02 02:49:35

这就是原因(来自 MPMoviePlayerController 文档):

iOS 4.3 及更早版本中的行为

在 iOS 4.3 及更早版本中,新的电影播放器​​会自动准备播放。从iOS 5.0开始,为了便于更细粒度的播放控制,新的电影播放器​​不会自动准备播放。请参阅 initWithContentURL: 实例方法的讨论。

讨论部分指出:

.. 要准备新的电影播放器​​进行播放,请调用 prepareToPlay 方法 ..

要在新的电影播放器​​准备好播放时收到通知,请注册 MPMoviePlayerLoadStateDidChangeNotification 通知。然后,您可以通过访问 loadState 属性来检查加载状态。

电影准备好播放后,您就可以从中请求缩略图。

Here is why (from MPMoviePlayerController documentation):

Behavior in iOS 4.3 and Earlier

In iOS 4.3 and earlier, a new movie player was automatically prepared to play. Starting in iOS 5.0, in order to facilitate finer-grained playback control, a new movie player is not automatically prepared to play. See the discussion for the initWithContentURL: instance method.

The discussion says, in part:

.. To prepare a new movie player for playback, call the prepareToPlay method ..

To be notified when a new movie player is ready to play, register for the MPMoviePlayerLoadStateDidChangeNotification notification. You can then check load state by accessing the loadState property.

Once the movie is ready to play, then you can request thumbnail images from it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文