AVFoundation - размер видеофайла увеличивается при наложении стикера на видео. - PullRequest
0 голосов
/ 25 мая 2020

AVFoundation увеличивает размер видеофайла, когда я накладываю изображение на видео. Я установил тип выходного файла как mp4. Иногда размер видеофайла не увеличивается, а иногда увеличивается примерно до 40 МБ. Есть ли возможность всегда уменьшать размер файла?

1 Ответ

0 голосов
/ 27 мая 2020

Вы должны проверить, как вы наклеиваете стикеры на свое видео. Это анимация (изображения движения стикера) или просто изображение. Если это всего лишь одно изображение, например, перед началом сеанса экспорта вы можете сделать что-то вроде этого:

    let parentLayer = CALayer()
    let videoLayer = CALayer()
    let overlayLayer = CALayer()
    let stickerLayer = CALayer()

    parentLayer.frame = CGRect(origin: .zero, size: renderSize)
    videoLayer.frame = parentLayer.frame
    stickerLayer.frame = parentLayer.frame
    overlayLayer.frame = parentLayer.bounds
    //Add the image inside of stickerLayer(in this case its from a screen shot of UIView, you can change to your custom UIImage
    stickerLayer.contents = self.stickerView.asImage().cgImage
    parentLayer.addSublayer(videoLayer)
    parentLayer.addSublayer(stickerLayer)
    parentLayer.addSublayer(overlayLayer)

    //create composition
    let videoComposition = AVMutableVideoComposition()
    videoComposition.renderSize = CGSize(width: renderSize.width, height: renderSize.height)
    videoComposition.frameDuration = CMTimeMake(value: 1, timescale: 30)
    videoComposition.renderScale = 1.0

    //finally add layers with animationTool
    videoComposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayers: [videoLayer], in: parentLayer)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...