Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 斯威夫特:如何在我的AVPlayerLayer上添加图像/文本,使其成为视频的一部分?_Ios_Swift_Swift3_Avfoundation_Avplayer - Fatal编程技术网

Ios 斯威夫特:如何在我的AVPlayerLayer上添加图像/文本,使其成为视频的一部分?

Ios 斯威夫特:如何在我的AVPlayerLayer上添加图像/文本,使其成为视频的一部分?,ios,swift,swift3,avfoundation,avplayer,Ios,Swift,Swift3,Avfoundation,Avplayer,我真的很难让图像或文字成为我视频的一部分,类似于Snapchats添加文字/贴纸功能。我不希望它只是坐在我的视频,但实际上是在视频本身,所以当它被保存,它显示。任何帮助都将被高度赞赏并标记为答案。谢谢各位。代码如下 import UIKit import AVFoundation import AVKit import Photos class VideoViewController: UIViewController { override var prefersStatusBarH

我真的很难让图像或文字成为我视频的一部分,类似于Snapchats添加文字/贴纸功能。我不希望它只是坐在我的视频,但实际上是在视频本身,所以当它被保存,它显示。任何帮助都将被高度赞赏并标记为答案。谢谢各位。代码如下

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()
    }

对于预览,您只需在
AVPlayerLayer
的顶部添加
CALayer
s或
UIView
s,如果该层上有
CAAnimation
s,则可以使用
AVSynchronizedLayer
。有关更多信息,请参阅

对于导出,您需要使用
AVVideoCompositionCoreAnimationTool
。有关更多信息,请参阅

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