斯威夫特:如何在我的 AVPlayerLayer 顶部添加图像/文本以使其成为视频的一部分?
Posted
技术标签:
【中文标题】斯威夫特:如何在我的 AVPlayerLayer 顶部添加图像/文本以使其成为视频的一部分?【英文标题】:Swift: How do I add an image/text on top of my AVPlayerLayer for it to be a part of the video? 【发布时间】:2017-07-04 19:35:51 【问题描述】:我真的很难让图像或文本成为我视频的一部分,类似于 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()
【问题讨论】:
【参考方案1】:对于预览,您只需在AVPlayerLayer
的顶部添加CALayer
s 或UIView
s,如果您在该层上有CAAnimation
s 您可以使用AVSynchronizedLayer
。请参阅docs 了解更多信息
对于导出,您需要使用AVVideoCompositionCoreAnimationTool
。请参阅docs 了解更多信息。
Here 可以找到AVVideoCompositionCoreAnimationTool
的使用教程。 (它在 Objective-C 中,但我认为将它翻译成 swift 并不难)
【讨论】:
以上是关于斯威夫特:如何在我的 AVPlayerLayer 顶部添加图像/文本以使其成为视频的一部分?的主要内容,如果未能解决你的问题,请参考以下文章
包装 AVPlayer 行为时处理 AVPlayerLayer