为什么我不能在 Playground 中使用 AVURLAsset 从媒体文件中提取数据?
Why can't I extract data from media file using AVURLAsset in a Playground?
在我的操场上:
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 []
我不知道哪里出了问题,也许路径?文档不清楚。
它不起作用,因为游乐场是 sandboxed。
虽然您可以使用 .checkResourceIsReachableAndReturnError
查看您的文件 URL,但实际上您无法从 Playground 访问文件系统。
解决方案是将文件嵌入到 Playground 本身。
打开文件导航器(使用菜单或 CMD+1),然后 将您的 MP4 文件拖放到 导航器的 Resources 文件夹中。
完成后,您可以使用 NSBundle
访问文件 - 或者甚至只需将文件从导航器拖放到 Playground:
let video2 = #
并将文件拖放到我放置 # 的位置,它会粘贴一个图标,该图标实际上是文件 URL.
现在这个 URL 将适用于您的代码。
在我的操场上:
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 []
我不知道哪里出了问题,也许路径?文档不清楚。
它不起作用,因为游乐场是 sandboxed。
虽然您可以使用 .checkResourceIsReachableAndReturnError
查看您的文件 URL,但实际上您无法从 Playground 访问文件系统。
解决方案是将文件嵌入到 Playground 本身。
打开文件导航器(使用菜单或 CMD+1),然后 将您的 MP4 文件拖放到 导航器的 Resources 文件夹中。
完成后,您可以使用 NSBundle
访问文件 - 或者甚至只需将文件从导航器拖放到 Playground:
let video2 = #
并将文件拖放到我放置 # 的位置,它会粘贴一个图标,该图标实际上是文件 URL.
现在这个 URL 将适用于您的代码。