【发布时间】:2021-01-19 19:27:14
【问题描述】:
我正在尝试使用AVPlayer 和AVPlayerViewController 在我的应用中播放本地视频。问题是,当我尝试在某些部分播放视频时,视频开始冻结并每秒播放 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
videoPlayerController是AVPlayerViewController的变量,player是AVPlayer的变量。我真的希望有人可以帮助我;在过去的几天里,它一直让我发疯。
【问题讨论】:
-
出口代码在哪里?我们能得到那个吗?
-
@impression7vx 我使用 Premiere 导出了一个普通视频