【问题标题】:image location changes in Video in iosios中视频中的图像位置更改
【发布时间】:2017-01-19 07:29:32
【问题描述】:

我正在使用以下代码使用 CALayer 在视频中添加图像。但是我面临的问题是当我选择不同的视频分辨率时水印的大小及其位置会发生变化。我正在制作一个像 snapchat 这样的应用程序,用户可以在其中选择贴纸并将其添加到视频中,方法是调整其位置和大小。

谁能告诉我,我在这里犯了什么错误?或者我现在应该怎么做才能做到这一点?提前致谢!

let aLayer = CALayer()
    aLayer.contents = image.cgImage

    aLayer.opacity = 1.0
    //sorts the layer in proper order
    let videoTrack: AVAssetTrack? = videoAsset.tracks(withMediaType: AVMediaTypeVideo)[0]
    let videoSize: CGSize? = videoTrack?.naturalSize
    let parentLayer = CALayer()
    let videoLayer = CALayer()

    let videoScale : CGFloat =  CGFloat((videoSize?.width)!)/CGFloat(self.containerView.frame.width)

    print("sticker frame \((stickerImageView?.frame.width)! * videoScale) \((stickerImageView?.frame.height)! * videoScale)")

    aLayer.frame = CGRect(x: (stickerImageView?.frame.origin.x)! * videoScale  ,y:  (stickerImageView?.frame.origin.y)! * videoScale , width: (stickerImageView?.frame.width)! * videoScale  , height : (stickerImageView?.frame.height)! * videoScale )


    parentLayer.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat((videoSize?.width)!), height: CGFloat((videoSize?.height)!))
    videoLayer.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat((videoSize?.width)!), height: CGFloat((videoSize?.height)!))
    parentLayer.addSublayer(videoLayer)
    parentLayer.addSublayer(aLayer)

【问题讨论】:

    标签: ios objective-c swift avfoundation


    【解决方案1】:

    您需要将图像的大小定义为视频大小的百分比。现在您的图像大小是恒定的。因此,例如,如果您有一个 100x100 的图像并且视频是 300x200,则该图像将覆盖视频宽度的三分之一和其高度的一半。但是将相同的图片应用到更大的视频(例如 1080x720),图片将是视频宽度和高度的 10% 左右。

    您计算的比例是视频与其容器之间的关系。您应该根据实际视频大小进行计算。

    【讨论】:

    • 谢谢!,我可以使用这种方法获得 x、宽度和高度,但现在只有 Y 不正确,您能帮帮我吗?
    • @AkshaykumarMaldhure Y 应该是什么?
    • 它应该是 UIImage 帧 y,它是如何被用户保存在视频中的。他总是可以改变图像位置
    • @AkshaykumarMaldhure 如果 X 位置工作正常,Y 也应该工作。如果不起作用,则可能是一些计算错误。试着找到它。如果不能,请以某种方式将所有代码发送给我。
    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2016-04-03
    • 1970-01-01
    • 2011-02-13
    • 2017-05-10
    相关资源
    最近更新 更多