Ios 如何在Swift中将图像导出为视频?
我正在Swift中制作一个应用程序(我有最后一次xcode更新),它必须从一些图像生成视频。Ios 如何在Swift中将图像导出为视频?,ios,swift,video,avfoundation,Ios,Swift,Video,Avfoundation,我正在Swift中制作一个应用程序(我有最后一次xcode更新),它必须从一些图像生成视频。 我从这个答案中得到了代码 我这样调用函数: let size = CGSize(width: 1280, height: 720) let pathVideo = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let percorsoVideo = pathVideo[0] writeImag
我从这个答案中得到了代码
我这样调用函数:
let size = CGSize(width: 1280, height: 720)
let pathVideo = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let percorsoVideo = pathVideo[0]
writeImagesAsMovie(arrayImmagini, videoPath: percorsoVideo+"/prova.mp4", videoSize: size, videoFPS: 1)
var arrayImmagini = [UIImage(imageLiteral: "Frames/turtle/turtle0.jpg"), UIImage(imageLiteral: "Frames/turtle/turtle1.jpg"), ...]
“arrayImmagini”的字面定义如下:
let size = CGSize(width: 1280, height: 720)
let pathVideo = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let percorsoVideo = pathVideo[0]
writeImagesAsMovie(arrayImmagini, videoPath: percorsoVideo+"/prova.mp4", videoSize: size, videoFPS: 1)
var arrayImmagini = [UIImage(imageLiteral: "Frames/turtle/turtle0.jpg"), UIImage(imageLiteral: "Frames/turtle/turtle1.jpg"), ...]
当我尝试运行代码时,我得到了一个完全黑色的视频,xcode给了我这2个错误,是阵列中图像数量的两倍:
Sep 5 09:24:15 Prova[1554] <Error>: CGBitmapContextCreate: invalid data bytes/row: should be at least 7680 for 8 integer bits/component, 3 components, kCGImageAlphaPremultipliedFirst.
Sep 5 09:24:15 Prova[1554] <Error>: CGContextDrawImage: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
而不是:
func fillPixelBufferFromImage(image: UIImage, pixelBuffer: CVPixelBufferRef) {
CVPixelBufferLockBaseAddress(pixelBuffer, 0)
let pixelData = CVPixelBufferGetBaseAddress(pixelBuffer)
let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
// Create CGBitmapContext
let context = CGBitmapContextCreate(
pixelData,
Int(image.size.width),
Int(image.size.height),
8,
CVPixelBufferGetBytesPerRow(pixelBuffer),
rgbColorSpace,
CGImageAlphaInfo.PremultipliedFirst.rawValue
)
// Draw image into context
CGContextDrawImage(context, CGRectMake(0, 0, image.size.width, image.size.height), image.CGImage)
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0)
}
这使得xcode不再给我错误,但我仍然得到一个黑色视频。请帮帮我,我是应用开发新手,甚至是AVFoundation新手,我自己也不知道如何解决这个问题。
谢谢大家! 经过多次尝试,我发现了问题所在。 视频大小不能小于图片大小。
一旦我这样做了,一切都正常了:
let size = CGSize(width: 1920, height: 1280)
伙计们,我建立了我的应用程序,可以拍摄一些图像和音乐文件,然后将它们转换成视频。但是这些图像没有很酷的动画。它们只是出现和消失。我想对它们应用动画。我做了一些关于CALayer类的研究,但我没有发现任何关于在视频中添加动画的内容。任何人都可以帮助我,使我可以添加所需的动画个人照片。那太好了。谢谢