由于SwiftyDropbox
API,我不知道如何获取存储在Dropbox上的视频的持续时间。
听起来这些信息应该在Files.VideoMetadata
class
我尝试使用getMetadata
方法,但结果并不包含视频时长,这是我期望得到的。
这是我目前的代码:
Dropbox.authorizedClient!
.files
.getMetadata(path: file.pathLower!, includeMediaInfo: true)
.response({ (result, err) in
if let metadata = result as? Files.FileMetadata {
print(metadata.name)
if metadata.mediaInfo != nil {
switch metadata.mediaInfo! as Files.MediaInfo {
case .Pending:
print("Pending")
case .Metadata(let mediaMetadata):
print(mediaMetadata)
}
}
}
})
mediaMetadata
包含{}
,我无法获得视频的持续时间,也无法获得其他属性。
这似乎是因为我在Dropbox上传的视频是.mov
格式。在这种情况下的任何解决方案?
答案 0 :(得分:0)
首先,请确保在includeMediaInfo
设置为true
的情况下调用getMetadata
。 (此外,这只是最近添加的,所以请确保您正在运行最新版本的SwiftyDropbox。)
生成的FileMetadata
有望将MediaInfo
设置为MediaMetadata
的实例。 (它也可能是Pending
,所以要小心。)
但是,当您查看MediaMetadata
时,请注意其字段全部设置为可选字段,这意味着很遗憾无法保证它们可用。
这是因为虽然Dropbox尽力提取此元数据,但它始终无法提取。这可能因文件而异。
答案 1 :(得分:0)
您实际上很亲密,这是您获得视频时长的方法:
if metadata.mediaInfo != nil {
switch metadata.mediaInfo! as Files.MediaInfo {
case .pending:
print("Pending")
case .metadata(let mediaMetadata):
switch mediaMetadata {
case let videoMetadata as Files.VideoMetadata:
print(videoMetadata)
print(videoMetadata.duration)
case let photoMetadata as Files.PhotoMetadata:
print(photoMetadata)
default: break
}
}
}
您可以使用它来确定文件以及视频还是照片的天气