0

我不知道如何获取存储在 Dropbox 上的视频的持续时间,这要归功于SwiftyDropboxAPI。

听起来这些信息应该在Files.VideoMetadata类的实例中

我尝试使用这些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)
        }
    }
}
})

mediaMetadatacontains {},我无法获得视频的持续时间,也无法获得其他属性。

似乎是因为我上传到 Dropbox 的视频是.mov格式的。在这种情况下有什么解决方案吗?

4

2 回答 2

0

首先,确保您getMetadata使用includeMediaInfoset to调用true。(此外,这只是最近才添加的,因此请确保您运行的是最新版本的 SwiftyDropbox。)

结果FileMetadata将有望MediaInfo设置为MediaMetadata. (不过也有可能Pending,所以要小心。)

但是,一旦您查看了MediaMetadata它,请注意它的字段都设置为可选,这意味着很遗憾不能保证它们将可用。

这是因为尽管 Dropbox 确实尽最大努力提取此元数据,但它并不总是这样做。这可能因文件而异。

于 2016-08-10T16:54:06.090 回答
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
       }
   }
}

您可以使用它来确定文件是视频还是照片的天气

于 2018-06-28T18:43:33.207 回答