0

重複した質問かもしれませんが、解決に多くの時間を費やしました。mp4 ファイルを documentary ディレクトリにダウンロードします。この関数ですべてのファイル名を取得できます。

func listFilesFromDocumentsFolder() -> [String]? {
    let fileMngr = FileManager.default;
    let docs = fileMngr.urls(for: .documentDirectory, in: .userDomainMask)[0].path
    return try? fileMngr.contentsOfDirectory(atPath: docs)
}

そして、これらのファイルの時間の長さをすべて取得したいと思います。私が試したことを示しましょう:

var downs = listFilesFromDocumentsFolder()!
for i in 0...downs.count - 1 {
    if downs[i] == ".DS_Store" {
                continue
    }
    let fileManager = FileManager.default
    let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
    if let documentDirectory= urls.first as! NSURL as! NSURL { 
         let yourFinalVideoURL = documentDirectory.appendingPathComponent(downs[i])
         let asset = AVURLAsset(url: yourFinalVideoURL!) as AVURLAsset
         let totalSeconds = Int(CMTimeGetSeconds(asset.duration))
         let minutes = totalSeconds / 60
         let seconds = totalSeconds % 60
         let mediaTime = String(format:"%02i:%02i",minutes, seconds)
         print(yourFinalVideoURL)
         print(mediaTime)
}

出力は

Optional(file:///Users/utf8/Library/Developer/CoreSimulator/Devices/D4F341F1-38A2-498B-99F0-076BE9164A5C/data/Containers/Data/Application/718927F7-4E39-43A8-B760-2A468F82A10F/Documents/viki50102klr.mp4)
00:00

私の意見では、ビデオ ファイルの URL を取得しようとしたときに間違っていました。しかし、それを修正する方法。私は多くのことを試します。ファイルが存在するかどうかも確認します。もちろん存在します。

また、私は試します

AVAsset(url: URL(url: yourFinalVideoURL)!)

残念ながらそれは動作しません..

4

1 に答える 1