【发布时间】:2018-08-09 11:19:54
【问题描述】:
如何绘制到CIImage(或者可能是CVPixelBuffer,但我想将文本添加到CIImage 更容易)? 不是 UIImage
我使用AVAssetWriter 和CMSampleBuffer(来自视频、音频输入)录制视频(.mp4 文件)。录制时我想在视频帧上添加文本,我已经将CMSampleBuffer 转换为CIImage,现在我需要以某种方式将文本添加到CIImage 并转换回CVPixelBuffer。我真的没有在 Swift 中找到任何简单的示例,如何向CIImage 添加(绘制)文本或添加任何其他内容(如线条、矩形,而不仅仅是文本)。
/// encode video buffer
func appendVideoSampleBuffer(_ sampleBuffer: CMSampleBuffer) {
// before encoding video frames into a file I would like process it
// 1. convert CMSampleBuffer to ciImage
let cvPixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!
let ciimage : CIImage = CIImage(cvPixelBuffer: cvPixelBuffer)
// 2. do something with CIImage
// 3. convert CIImage back to CMSampleBuffer
let sampleBufferWithText == ...
appendSampleBuffer(sampleBufferWithText, ofMediaType: AVMediaType.video.rawValue)
}
/// encode audio buffer
func appendAudioSampleBuffer(_ sampleBuffer: CMSampleBuffer) {
appendSampleBuffer(sampleBuffer, ofMediaType: AVMediaType.audio.rawValue)
}
【问题讨论】:
-
点击此链接,可能会对您有所帮助:stackoverflow.com/questions/28906914/…
-
@PaulMarshal 是关于将文本添加到
UIImage而不是CIImage或CVPixelBuffer -
您的问题,在标题和问题中都使用了
CIImage,这让我很困惑——您是想将文本添加到CIImage还是UIImage?因此,假设您在谈论CIImage,有两件事:(1) 了解CIImage不是 图像- 它是图像的配方。 (2)有几个CIFilters you could use to (a) create aUILabel`里面有文字,然后(b)把它变成CIImage与第一个结合。 -
@dfd 在我的问题中我只使用
CIImage,所以我不明白为什么它会让你感到困惑。 -
@dfd Paul Marshal 给了我一个与 UIImage 相关的问题的链接,之后我更新了我的问题,添加了
not to UIImage(这里我的意思是我不想将其转换为 UIImage,而是转换为 CIImage,我希望它是 CIImage)
标签: ios swift avassetwriter ciimage cvpixelbuffer