据我了解,您可以做到这一点,尽管您的应用程序只会运行有限的时间,但根据您视频的大小,这可能就足够了。事实上,我正是在我的动画创作应用程序idAnimate - 用手指触摸 iPad 上制作动画的。据我所知,该应用程序将获得大约 10 分钟的时间来完成任务,这已经足够了。如果您的应用程序需要额外的时间,您可能想研究如何优化您的视频渲染算法、降低视频质量等。
无论如何,假设您使用 AVAssetWriter 生成视频,这里有一些关于我如何执行此操作的代码:首先,您必须进行调用以获得后台权限,并为您的时间完成后的操作提供一个块(背景任务到期处理程序):
UIApplication *app = [UIApplication sharedApplication];
_backgroundRenderingID = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:_backgroundRenderingID];
_backgroundRenderingID = UIBackgroundTaskInvalid;
}];
之后,您可以开始渲染视频:
videoWriter = [[AVAssetWriter alloc] initWithURL:
[NSURL fileURLWithPath:self.moviePath] fileType:AVFileTypeMPEG4
error:&error];
NSParameterAssert(videoWriter);
...
完成后,请确保让操作系统知道您的后台任务已完成:
[[UIApplication sharedApplication] endBackgroundTask:_backgroundRenderingID];
我希望这有帮助。