首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AVVideoComposition中玩AVPlayer?

如何在AVVideoComposition中玩AVPlayer?
EN

Stack Overflow用户
提问于 2019-11-27 10:25:47
回答 3查看 568关注 0票数 0

大家好,我一直在创建一个iOS视频编辑应用程序。我已经创建了一个由两个layers.now组成的AVVideoComposition,我想在AVPlayer.as中播放这个组合,AVVideoComposition不是一个资产,所以我如何在AVPlayer中发挥这个功能呢?下面是我一直在尝试的示例代码,我听说过AVVideoCompositionCoreAnimation,但这也不起作用。

代码语言:javascript
复制
let backgroundLayer = CoverView.layer
let videoLayer = VideoView.layer
let parentLayer = CALayer()
    parentLayer.frame = CGRect(x:20.0 , y: 20.0, width: CoverView.frame.width, height: CoverView.frame.height)
    parentLayer.addSublayer(backgroundLayer)
    parentLayer.addSublayer(videoLayer)


    let composition = AVMutableVideoComposition()

    composition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videoLayer, in: parentLayer)
EN

回答 3

Stack Overflow用户

发布于 2021-09-22 07:03:41

您可以在AVPlayer中加入AVPlayerItem,这允许将组合作为输入,这样就可以不导出就可以播放。

代码语言:javascript
复制
let item = AVPlayerItem(asset: composition)
let player = AVPlayer(playerItem: item)
票数 1
EN

Stack Overflow用户

发布于 2019-11-27 10:50:40

您需要一个用于this.in AVExportSession的导出方法,有一个方法导出了finish.in,这个方法可以为您的视频file.like生成一个url

代码语言:javascript
复制
func exportDidFinish(_ session: AVAssetExportSession) {

     guard
        session.status == AVAssetExportSession.Status.completed,
        let outputURL = session.outputURL
        else {
          return
      }

        self.avplayer = AVPlayer(url: outputURL)

               playerController.player = self.avplayer
               self.addChild(playerController)
               view.addSubview(playerController.view)
               playerController.view.frame = view.bounds
               playerController.showsPlaybackControls = false
              avplayer.isMuted = false
票数 0
EN

Stack Overflow用户

发布于 2022-10-31 20:57:26

你可以玩AVMutableComposition,但不能玩AVMutableVideoComposition。但是您可以使用AVMutableVideoComposition作为AVPlayerItem的videoComposition属性。

代码语言:javascript
复制
let composition = AVMutableComposition()
    
//add and configure tracks here    

let videoComposition = AVMutableVideoComposition()
videoComposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videoLayer, in: parentLayer)

let item = AVPlayerItem(asset: composition)
item.videoComposition = videoComposition
let player = AVPlayer(playerItem: item)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59067996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档