【发布时间】:2017-06-08 11:07:26
【问题描述】:
我有这个应用程序,主要目的是使用 AVFoundation 录制视频,然后保存输出文件委托。
首先,任何正常运行的应用程序都可以正确记录和保存视频,然后我可以将生成的输出文件 URL 加载到我在下一个视图控制器上的 Avplayer 中。
如果不重新运行 Xcode,AVPlayer 会正常播放。我的意思是重新运行是再次点击 Command+R 或单击 xcode 上的播放按钮以重新运行。
当我再次运行应用程序时,我仍然可以看到文件并通过打印列出它们,但是当我尝试访问录制的文件时,应用程序将不再播放视频。看起来视频没有正确加载或任何东西,即使它已经在早些时候工作了。发生这种情况后,我仍然可以继续录制新文件并播放新录制的文件,但不能播放旧文件。
应用程序重建之前的旧文件在 AVPlayer 上看起来像这样
AVPlayer 也会成功地在我的观察者上返回 .readyToPlay 状态。
我很困惑我应该如何继续修复这个问题。
if let videoPreviewController = storyBoard.instantiateViewController(withIdentifier: "VideoPreviewController") as? VideoPreviewController {
let url = NSURL(fileURLWithPath: "file:///var/mobile/Containers/Data/Application/61E182ED-D490-4C7D-BAB7-C90D095C7E43/Documents/Thursday,%208%20June%202017%20at%201:47:51%20PM%20Philippine%20Standard%20Time.mov")
videoPreviewController.player = AVPlayer()
let playerItem = AVPlayerItem.init(url: url as URL)
videoPreviewController.player?.replaceCurrentItem(with: playerItem)
videoPreviewController.report = relationship
videoPreviewController.appointment = self.appointment
navigation.pushViewController(videoPreviewController, animated: true)
}
【问题讨论】:
-
请向我们展示您用于加载电影网址的代码。
-
@Mozahler 我编辑了帖子以使用用于加载 url 的代码。
-
好的。那是完美的。不幸的是,重新运行应用程序时路径会发生变化,因此您必须在检索文件之前请求路径。请参阅下面的答案。
标签: swift avfoundation avplayer avplayerviewcontroller avplayeritem