繁体   English   中英

如何将文本绘制到 CIImage 中?

[英]How to draw text into CIImage?

如何绘制到CIImage (或者可能绘制到CVPixelBuffer ,但我想将文本添加到CIImage更容易)? 不是 UIImage

我使用AVAssetWriterCMSampleBuffer (来自视频、音频输入)录制视频(.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)
}

您可以为文本创建 NSAttributedString -> 将此字符串绘制到 cgContext -> 转换 UIImage/CGImage -> CIImage

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM