Swift 为什么可以';我在操场上使用AVURLAsset从媒体文件中提取数据吗?

Swift 为什么可以';我在操场上使用AVURLAsset从媒体文件中提取数据吗?,swift,macos,avfoundation,swift-playground,avurlasset,Swift,Macos,Avfoundation,Swift Playground,Avurlasset,在我的操场上: import Cocoa import Foundation import AVFoundation var path2 = "/Users/me/Movies/bukesiyi.mp4" var video2 = NSURL(fileURLWithPath: path2, isDirectory: false) // it shows: file:///Users/me/Movies/bukesiyi.mp4 video2.checkResourceIsReachableAn

在我的操场上:

import Cocoa
import Foundation
import AVFoundation

var path2 = "/Users/me/Movies/bukesiyi.mp4"
var video2 = NSURL(fileURLWithPath: path2, isDirectory: false)
// it shows: file:///Users/me/Movies/bukesiyi.mp4
video2.checkResourceIsReachableAndReturnError(nil)
// it's true
var asset = AVURLAsset(URL: video2)
// it shows: <AVURLAsset: 0x7fc0a9f13500, URL = file:///Users/me/Movies/bukesiyi.mp4>
asset.tracksWithMediaType(AVMediaTypeVideo)
// it's []
asset.readable
// it's false
asset.playable
// it's false
asset.commonMetadata
// it's []
let video2 = #
导入可可粉
进口基金会
进口AVF基金会
var path2=“/Users/me/Movies/bukesiyi.mp4”
var video2=NSURL(fileURLWithPath:path2,isDirectory:false)
//它表明:file:///Users/me/Movies/bukesiyi.mp4
视频2.checkResourceIsReachableAndReturnError(无)
//这是真的
var asset=AVURLAsset(URL:video2)
//它表明:
asset.tracksWithMediaType(AVMediaTypeVideo)
//是[]
asset.readable
//这是假的
资产。可玩
//这是假的
asset.commonMetadata
//是[]

我不知道怎么了,也许是路?文档不清楚。

它不起作用,因为游乐场很拥挤

尽管您可以使用
查看文件URL。checkResourceIsReachableAndReturnError
,但您实际上无法从游乐场访问文件系统

解决方案是将文件嵌入操场本身。

打开文件导航器(使用菜单或CMD+1),然后将MP4文件放到导航器的资源文件夹中

完成后,您可以使用
NSBundle
访问文件,甚至可以将文件从导航器拖放到游乐场:

import Cocoa
import Foundation
import AVFoundation

var path2 = "/Users/me/Movies/bukesiyi.mp4"
var video2 = NSURL(fileURLWithPath: path2, isDirectory: false)
// it shows: file:///Users/me/Movies/bukesiyi.mp4
video2.checkResourceIsReachableAndReturnError(nil)
// it's true
var asset = AVURLAsset(URL: video2)
// it shows: <AVURLAsset: 0x7fc0a9f13500, URL = file:///Users/me/Movies/bukesiyi.mp4>
asset.tracksWithMediaType(AVMediaTypeVideo)
// it's []
asset.readable
// it's false
asset.playable
// it's false
asset.commonMetadata
// it's []
let video2 = #
把文件放在我放的地方,它会粘贴一个图标,实际上就是文件的URL

现在,此URL将与您的代码一起使用


您是否在命令行项目中尝试过同样的方法?游乐场有关于访问文件系统的有趣规则。我认为要访问资源文件,您需要将其导入游乐场的资源文件夹,否则将无法访问。这对我来说很奇怪,它以“可到达”的形式返回。这对我来说没关系。非常感谢!