Swift:如何在 AVPlayerLayer 之上添加图像/文本以使其成为视频的一部分?

Dan*_*ond 4 avfoundation ios avplayer swift swift3

我真的很难让图像或文本真正成为我的视频的一部分,类似于 Snapchat 添加文本/贴纸功能。我不希望它只是位于我的视频之上,而是实际上位于视频本身上,以便在保存时它会显示。任何帮助将受到高度赞赏并标记为答案。多谢你们。代码如下...

import UIKit
import AVFoundation
import AVKit
import Photos

class VideoViewController: UIViewController {

    override var prefersStatusBarHidden: Bool { return true }

    var videoURL: URL
    var player: AVPlayer?
    var playerLayer: AVPlayerLayer?

    init(videoURL: URL) {
        self.videoURL = videoURL
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        UIApplication.shared.keyWindow?.backgroundColor = .black
        self.view.backgroundColor = .black

        self.player = AVPlayer(url: videoURL)
        self.playerLayer = AVPlayerLayer(player: self.player)
        self.playerLayer?.frame = self.view.frame
        self.playerLayer?.backgroundColor = UIColor.black.cgColor
        self.view.layer.addSublayer(playerLayer!)

        guard player != nil else { return }
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        player?.play()
    }
Run Code Online (Sandbox Code Playgroud)

Tik*_*iko 5

对于预览,您可以在顶部添加CALayers 或s ,如果您在该图层上有 s ,则可以使用。请参阅文档以获取更多信息UIViewAVPlayerLayerCAAnimationAVSynchronizedLayer

对于导出,您需要使用AVVideoCompositionCoreAnimationTool. 请参阅文档以获取更多信息。

在这里您可以找到有关使用的教程AVVideoCompositionCoreAnimationTool。(它是 Objective-C 的,但我认为将其翻译成 swift 并不难)