Ios 斯威夫特:如何在我的AVPlayerLayer上添加图像/文本,使其成为视频的一部分?
我真的很难让图像或文字成为我视频的一部分,类似于Snapchats添加文字/贴纸功能。我不希望它只是坐在我的视频,但实际上是在视频本身,所以当它被保存,它显示。任何帮助都将被高度赞赏并标记为答案。谢谢各位。代码如下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
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并不困难)