我被困了几个星期!
我在stackoverflow上尝试了所有的解决方案,它们可以在大约0到500张图像上工作,或者在12 fps上工作50秒,但是对于更长的视频,在大约50秒后会出现黑色闪烁,具体取决于iphone, 在iphone 8上50秒后发生iphone 6,它发生在1:30之后
我尝试了this link writeImagesAsMovie()
函数
有时我会遇到内存分配问题,有时候我没有, 但黑色闪烁仍然存在。
// MARK: - Fill Pixel Buffer -
private func fillPixelBufferFromImage(image: UIImage, pixelBuffer: CVPixelBuffer) {
CVPixelBufferLockBaseAddress(pixelBuffer, CVPixelBufferLockFlags(rawValue: 0))
let pixelData = CVPixelBufferGetBaseAddress(pixelBuffer)
let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
// Create CGBitmapContext
let context = CGContext(
data: pixelData,
width: Int(720),
height: Int(720),
bitsPerComponent: 8,
bytesPerRow: CVPixelBufferGetBytesPerRow(pixelBuffer),
space: rgbColorSpace,
bitmapInfo: CGImageAlphaInfo.premultipliedFirst.rawValue
)
// Draw image into context"
context?.draw(image.cgImage!, in: CGRect(x: 0, y: 0, width: 720, height: 720))
CVPixelBufferUnlockBaseAddress(pixelBuffer, CVPixelBufferLockFlags(rawValue: 0))
//UIGraphicsEndImageContext()
}
答案 0 :(得分:0)
有助于获得理想结果的事情...... 使用UIImageJPEGRepresentation而不是PNG,尺寸必须是16的倍数...... :)和更新的iphone可以处理更多图像