0

SwiftyDropboxAPIのおかげで、Dropbox に保存されているビデオの長さを取得するために何ができるかわかりません。

これらの情報は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)
        }
    }
}
})

mediaMetadataが含まれており{}、ビデオの長さやその他のプロパティを取得できません。

Dropbox にアップロードした動画が の.mov形式であることが原因のようです。この場合の解決策はありますか?

4

2 に答える 2

0

まず、 set toで呼び出しgetMetadataていることを確認してください。(また、これは最近追加されたばかりなので、最新バージョンの SwiftyDropbox を実行していることを確認してください。)includeMediaInfotrue

結果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 に答える