【问题标题】:How to make AVPlayer appear instantly instead of after video ends?如何让 AVPlayer 立即出现而不是在视频结束后出现?
【发布时间】:2015-06-26 02:12:18
【问题描述】:

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

目标是立即重播视频,但 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()
}

【问题讨论】:

  • 我不清楚你在期待什么。请改写。您是否试图在录制视频时显示相机正在录制的内容?当您说“AVPlayer 仅在视频完成后出现”时,您的意思是 AVPlayer 仅在录制完成后出现?
  • @JörnEyrich 很抱歉造成混乱。现在发生的情况是:我们显示预览,以便用户可以实时查看他正在录制的内容。用户完成录制后,我们要播放视频。不幸的是,没有视频出现,只有音频播放。播放完音频后,会出现代表视频某些帧的图像。
  • 可能你生成的视频坏了?当您从保存到的专辑中播放它时,它的外观如何?或者,如果您在 playPreview() 中播放其他视频而不是刚刚录制的视频,是否正确显示?
  • @JörnEyrich 从专辑中播放时看起来不错。将检查其他视频并报告。

标签: ios swift video avfoundation avplayer


【解决方案1】:

也许这会有所帮助:

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

发送“url”到“playPreview”离开“completionBlock”而不是来自“AVAssetExportSession”的那个

也许……!

【讨论】:

    【解决方案2】:

    答案是我们一开始就有一个不正确的视频,如下所述:AVAssetExportSession export fails non-deterministically with error: "Operation Stopped, NSLocalizedFailureReason=The video could not be composed."

    这里回答了问题的另一部分(在图像/视频出现之前很久就播放的音频):Long delay before seeing video when AVPlayer created in exportAsynchronouslyWithCompletionHandler

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      相关资源
      最近更新 更多