iOS 将 Cocos2Dx 场景录制成视频
iOS Record Cocos2Dx scene as video
我正在寻找一种将 cocos2dx 场景保存为视频的方法。最好希望这发生在后台(动画场景对用户不可见)。
我看过几个选项:
Everplay - 不允许您下载视频文件并要求场景是开放和可见的。
Kamcord - 看起来它已经停产或什么的,即使它确实有效,它看起来也不支持将视频文件保存到设备
ReplayKit - 需要用户接受录制,我想需要打开场景
我研究过将场景逐帧保存为图像,但运气不佳。
有人知道有什么选择吗?有没有办法访问帧并使用像素缓冲区创建视频?
谢谢!
找到解决办法。基本上做一个 UIView 扩展
Swift 3:
public extension UIView {
public func toImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, 1.0)
drawHierarchy(in: bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
您可以根据需要多次获取 UIView 'picture' 以获得所需的 FPS。所以假设你想以 20FPS 的速度进行全屏录制,只需创建一个计时器并每 0.05 秒拍摄一张照片。一旦你有了一系列图像,你就可以使用 AVAssetWriter 将它们组合成一个视频(你可以将图像搜索到视频并找到大量答案)
我正在寻找一种将 cocos2dx 场景保存为视频的方法。最好希望这发生在后台(动画场景对用户不可见)。 我看过几个选项: Everplay - 不允许您下载视频文件并要求场景是开放和可见的。 Kamcord - 看起来它已经停产或什么的,即使它确实有效,它看起来也不支持将视频文件保存到设备 ReplayKit - 需要用户接受录制,我想需要打开场景
我研究过将场景逐帧保存为图像,但运气不佳。
有人知道有什么选择吗?有没有办法访问帧并使用像素缓冲区创建视频?
谢谢!
找到解决办法。基本上做一个 UIView 扩展
Swift 3:
public extension UIView {
public func toImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, 1.0)
drawHierarchy(in: bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
您可以根据需要多次获取 UIView 'picture' 以获得所需的 FPS。所以假设你想以 20FPS 的速度进行全屏录制,只需创建一个计时器并每 0.05 秒拍摄一张照片。一旦你有了一系列图像,你就可以使用 AVAssetWriter 将它们组合成一个视频(你可以将图像搜索到视频并找到大量答案)