Ios AVAsset有0个曲目,即使视频存在,并且可以从摄像机滚动播放:故障排除步骤?
我们的应用程序允许用户录制视频并将其保存到他们的摄像机上。但是,我们似乎无法在AVPlayer中播放视频,即使已保存的视频可以从相机卷中很好地播放 由于某些原因,一个有效的视频文件会报告为具有0个曲目 代码: 我们正在测试的视频URL是: file:///var/mobile/Containers/Data/Application/F532DF34-371C-437E-A121-04C532349720/Documents/editedVideo-7325.mp4 从下面的代码和输出中可以看到,该文件存在,大小为419498字节 既然文件显然包含内容,为什么曲目会报告为0?除了检查磁道数量,我们还能做些什么来排除故障Ios AVAsset有0个曲目,即使视频存在,并且可以从摄像机滚动播放:故障排除步骤?,ios,swift,video,avfoundation,Ios,Swift,Video,Avfoundation,我们的应用程序允许用户录制视频并将其保存到他们的摄像机上。但是,我们似乎无法在AVPlayer中播放视频,即使已保存的视频可以从相机卷中很好地播放 由于某些原因,一个有效的视频文件会报告为具有0个曲目 代码: 我们正在测试的视频URL是: file:///var/mobile/Containers/Data/Application/F532DF34-371C-437E-A121-04C532349720/Documents/editedVideo-7325.mp4 从下面的代码和输出中可以看到,
func listFiles() {
let allPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let docsPath = allPaths[0] as! NSString
if let files = NSFileManager.defaultManager().contentsOfDirectoryAtPath(docsPath as String, error: nil) as? [String] {
println("Found \(files.count) file(s) in \(docsPath):")
for filename in files {
let filePath = docsPath.stringByAppendingFormat("/\(filename)") as String
var attr = NSFileManager.defaultManager().attributesOfItemAtPath(filePath, error: nil)
if let _attr:NSDictionary = attr {
let fileSize = _attr.fileSize()
println("\(filename) @ \(fileSize) bytes")
}
}
}
}
Found 11 file(s) in /var/mobile/Containers/Data/Application/5809B294-8A54-4506-A79A-F19E7C877A4A/Documents:
editedVideo-2252.mp4 @ 732567 bytes
editedVideo-3582.mp4 @ 728485 bytes
editedVideo-5175.mp4 @ 413897 bytes
editedVideo-5366.mp4 @ 607992 bytes
editedVideo-5459.mp4 @ 350652 bytes
editedVideo-622.mp4 @ 763026 bytes
**editedVideo-7325.mp4 @ 419498 bytes**
editedVideo-7428.mp4 @ 858742 bytes
editedVideo-7948.mp4 @ 923791 bytes
editedVideo-8612.mp4 @ 429463 bytes
editedVideo-9363.mp4 @ 511307 bytes
videoUrl
参数未指向正确的文件
在本地引用视频时使用此方法:
let filename = "yourvideo.mp4"
let allDirs = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDir = allDirs[0] as! NSString
let filePath = documentsDir.stringByAppendingPathComponent(filename)
let fileUrl = NSURL(fileURLWithPath: filePath)
文档
目录路径(例如,/var/mobile/Containers/Data/Application/8BA180AB-2DD9-4FD8-9312-2BF006914561/Documents/)发生了明显变化
您不能期望每次都使用相同的路径,因此不能像我们一样使用完全格式的文件URL字符串,即使是出于测试目的
Documents
目录的父目录(字母数字字符串)发生了变化。NSURL可以表示两种不同的含义:
let filename = "yourvideo.mp4"
let allDirs = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDir = allDirs[0] as! NSString
let filePath = documentsDir.stringByAppendingPathComponent(filename)
let fileUrl = NSURL(fileURLWithPath: filePath)