【问题标题】:AVPlayer video is freezing for some reason on rate 1AVPlayer 视频由于某种原因在速率 1 上冻结
【发布时间】:2021-01-19 19:27:14
【问题描述】:

我正在尝试使用AVPlayerAVPlayerViewController 在我的应用中播放本地视频。问题是,当我尝试在某些部分播放视频时,视频开始冻结并每秒播放 1 或 2 帧,而音频听起来非常好。它不是一个沉重的视频(4.5 MB,35 秒长),它以 25 fps 的速度导出(使用 adobe Premiere)。

我尝试了一些方法来修复它,其中一些修复了冻结,但不是一个好的解决方案:

  • 我以每秒 15 帧的速度导出了视频,这使它运行良好,但由于它是 15 fps,所以不稳定。
  • 我尝试以 150% 的速度导出视频,运行流畅。
  • 将速率设置为 0.75 可使视频流畅运行。
  • 将速率设置得更高会使其更频繁地冻结。
  • 由于某种原因,当我在 15 秒时开始播放视频时,它没有冻结。

这就是代码的样子:

let videoURL: URL = Bundle.main.url(forResource: currentComic?.getVideo(), withExtension: "mp4")!
player = AVPlayer(url: videoURL)
videoPlayerController.player = player
videoPlayerController.showsPlaybackControls = true
videoPlayerController.videoGravity = AVLayerVideoGravity.resizeAspectFill
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: .AVPlayerItemDidPlayToEndTime, object: player.currentItem)
self.present(videoPlayerController, animated: true, completion: nil)
var item = videoPlayerController.player!.currentItem
var previousPageCMTimeTag = CMTimeMakeWithSeconds(0, preferredTimescale: 1)
videoPlayerController.player!.seek(to: previousPageCMTimeTag)
videoPlayerController.player!.play()
player.rate = 1

videoPlayerControllerAVPlayerViewController的变量,playerAVPlayer的变量。我真的希望有人可以帮助我;在过去的几天里,它一直让我发疯。

【问题讨论】:

  • 出口代码在哪里?我们能得到那个吗?
  • @impression7vx 我使用 Premiere 导出了一个普通视频

标签: ios swift avplayer freeze


【解决方案1】:

我最近遇到了同样的问题,花了大约一周的时间进行诊断。

AVPlayerViewController 出现在屏幕上时设置showsPlaybackControls 将导致视频在播放器继续播放纯音频时冻结。 此属性的documentation 警告说,在播放器可见时设置此属性“会创建或破坏用户界面元素”,但我们从未想过它会完全破坏视频播放!

如果不查看如何使用 videoPlayerController 就很难判断您的代码是否正在执行此操作,但请确保在更改此属性时您的 AVPlayerViewController 不在屏幕上。

【讨论】:

    猜你喜欢
    • 2019-07-29
    • 2023-03-07
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多