AVFoundation: Как сделать преобразование текста в видео? - PullRequest
0 голосов
/ 20 мая 2019

Я хочу визуализировать текст (например, субтитры или, в моем случае, таймер) в видео и экспортировать его.Я заставил его работать, добавив новые CATextLayer с заданными beginTime и duration для каждого кадра в основном, но, как вы можете себе представить, это выходит из-под контроля памяти для видео, которые длиннее двух минут.

Итак, мой вопрос: Каков наилучший / правильный способ сделать это, чтобы моему приложению не хватило памяти?

Я добавил CATextLayer с данными beginTime и duration для родительского слоя и рендерингом его в видео через AVVideoCompositionCoreAnimationTool.

// Current time Label
let currentTimeLayer = ExportTextLayer()

currentTimeLayer.fontSize = scaleForVideoSize(value: 36.0)
currentTimeLayer.frame = CGRect(x: scaleForVideoSize(value: 60), y: size.height - scaleForVideoSize(value: 385), width: size.width, height: scaleForVideoSize(value: 50))
currentTimeLayer.string = "Current lap time: Some lap time"

currentTimeLayer.beginTime = currentTime
currentTimeLayer.duration = dataDuration

overlayLayer.addSublayer(currentTimeLayer)

ExportTextLayer - это простой CATextLayer () с некоторыми предварительно настроенными свойствами.

...