【问题标题】:Why doesn't AVPlayer work with a URL found with FileManager?为什么 AVPlayer 不能使用通过 FileManager 找到的 URL?
【发布时间】:2019-11-09 07:21:05
【问题描述】:

如果我使用通过 NSOpenPanel 获取的文件 URL,则创建一个 AVPlayerItem 并用它替换 AVPlayer:s 当前项可以正常工作。但是,如果我使用 FileManager 获取相同的文件 URL,即使没有生成错误,AVPlayer 也不会打开该文件。我什至出于调试目的对文件 URL:s 进行了“==”比较,结果为 true(使用 NSOpenPanel 获取并使用 FileManager 获取的相同文件 URL)。

我正在获取目录中视频的文件 URL:s,然后使用视频文件的名称填充 NSPopUpButton。从 NSPopUpButton 中选择一个视频应该将该视频加载到 AVPlayer 中,但即使我传递给 AVPlayerItem 的 URL:s 是正确的,这也不起作用。

有什么想法吗?

【问题讨论】:

  • 未经用户同意,您不得打开任何您想使用的文件。这是开发 Cocoa 应用程序的基础知识。
  • 这是有道理的 El Tomato。但是在这里,用户选择一个目录,其中 NSPopUpButton 填充有视频文件名。当用户从 NSPopUpButton 中选择一个文件时,该文件被加载。从用户的角度来看,他同意打开文件。如何告诉系统?
  • 这个想法是用户可以在应用程序中过滤文件列表,并根据过滤更新带有视频文件的NSPopUpButton。
  • 这是你的主意,不是 Apple 的主意。他们的想法是让用户使用 NSOpenPanel 选择文件。
  • 那么有没有办法实现我想要的?

标签: swift macos url avplayer


【解决方案1】:

沙盒可防止打开尚未使用 NSOpenPanel 打开的文件。通过单击 X 将沙盒切片从项目目标功能中移除,即可消除此限制。

由于我正在创建自己使用的程序,因此删除沙盒不是问题。我不知道它是否以及如何影响 AppStore 资格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多