如何使AVPlayer立即显示而不是在视频结束后?

Cra*_*lot 7 video avfoundation ios avplayer swift

我们的应用程序允许用户录制视频,然后应用程序添加字幕并导出已编辑的视频.

目标是立即重播视频,但AVPlayer仅在视频结束后出现(并且仅播放音频,这是一个单独的问题).

以下是现在发生的事情:我们显示预览,以便用户可以实时查看他正在录制的内容.用户完成录制后,我们要播放视频以供审核.不幸的是,没有视频出现,只播放音频.当音频完成播放时,会出现表示视频某帧的图像.

为什么会这样?

func exportDidFinish(exporter: AVAssetExportSession) {
    println("Finished exporting video")

    // Save video to photo album
    let assetLibrary = ALAssetsLibrary()
    assetLibrary.writeVideoAtPathToSavedPhotosAlbum(exporter.outputURL, completionBlock: {(url: NSURL!, error: NSError!) in
        println("Saved video to album \(exporter.outputURL)")
        self.playPreview(exporter.outputURL)
        if (error != nil) {
            println("Error saving video")
        }
    })
}


func playPreview(videoUrl: NSURL) {
    let asset = AVAsset.assetWithURL(videoUrl) as? AVAsset
    let playerItem = AVPlayerItem(asset: asset)
    player = AVPlayer(playerItem: playerItem)
    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = view.frame
    view.layer.addSublayer(playerLayer)
    player.play()
}
Run Code Online (Sandbox Code Playgroud)

Cra*_*lot 2

答案是我们首先有一个错误合成的视频,如下所述:AVAssetExportSession 导出失败,不确定性错误:“操作已停止,NSLocalizedFailureReason=无法合成视频。”

问题的另一部分(在图像/视频出现之前很久就播放音频)在这里得到了解答:当 AVPlayer 在 exportAsynchronouslyWithCompletionHandler 中创建时,看到视频之前有很长的延迟

希望这些可以帮助人们避免我们所遭受的痛苦!:)