Swift 从Gmail API附件数据创建AVAsset无法由AVPlayer播放

Swift 从Gmail API附件数据创建AVAsset无法由AVPlayer播放,swift,gmail-api,avplayer,nsdata,avasset,Swift,Gmail Api,Avplayer,Nsdata,Avasset,我目前正在使用Gmail API获取电子邮件,然后使用附件ID下载iOS应用程序中每封电子邮件的附件 我已经能够成功获取附件,但遇到了一个问题,我可以获取附件数据(Base64字符串),并将其转换为AVAsset,然后用于创建播放器项目,并由AVPlayer播放。但是,我得到一个错误日志,玩家无法加载玩家物品 请注意,如果之前检查电子邮件是否有视频附件,则我仅获取附件(此逻辑工作正常;为简洁起见,未显示) func getEmailAttachments(email: Email, to

我目前正在使用Gmail API获取电子邮件,然后使用附件ID下载iOS应用程序中每封电子邮件的附件

我已经能够成功获取附件,但遇到了一个问题,我可以获取附件数据(Base64字符串),并将其转换为
AVAsset
,然后用于创建播放器项目,并由
AVPlayer
播放。但是,我得到一个错误日志,玩家无法加载玩家物品

请注意,如果之前检查电子邮件是否有视频附件,则我仅获取附件(此逻辑工作正常;为简洁起见,未显示)

    func getEmailAttachments(email: Email, token: String){
        
        let headers: HTTPHeaders = [
            "api-key": "",
            "Authorization": "Bearer \(token)",
            "Accept": "application/json"
        ]
        
        //https://gmail.googleapis.com/gmail/v1/users/{userId}/messages/{messageId}/attachments/{id}

        AF.request("https://www.googleapis.com/gmail/v1/users/me/messages/\(email.id)/attachments/\(email.payload.body.attachmentId!)", headers: headers)
            .response
            
            { [self] response in
              
                do {
                    let json = try JSON(data: response.data!)                    
                    let asset = response.data?.getAVAsset()
                    let playerItem = AVPlayerItem(asset: asset!)
                    let avPlayer = AVPlayer(playerItem: playerItem)
                    avPlayer.play()
                } catch {
                    
                }
            }
    }

似乎是将AVPlayerLayer的引用保留在块内(将其移到函数外)的问题,因为它将被释放。另外,为播放器创建AVPlayerLayer并将其添加到视图中。