Карта mp3 s в каталоге документов и конвертировать в AVPlayerItems - PullRequest
0 голосов
/ 03 сентября 2018

Я использую этот метод для преобразования mp3 в моем основном пути пакета в элемент avplayer:

let path = Bundle.main.path(forResource: "Baroon", ofType: "mp3")
let url = URL(fileURLWithPath: path!)
let asset = AVAsset(url: url)
let item = AVPlayerItem(asset: asset)

Как я могу автоматически конвертировать все mp3, которые есть в каталоге Documents?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Класс Bundle имеет метод urls(forResourcesWithExtension:subdirectory:), который возвращает все файлы в комплекте (или в подкаталоге этого пакета) с заданным расширением файла. Используйте это, чтобы найти все файлы с расширением «mp3», а затем перебрать их и создать AVPlayerItem s из каждого.

0 голосов
/ 03 сентября 2018

Вы можете использовать метод FileManager contentsOfDirectory(of: URL), чтобы получить все файлы в вашем каталоге документов и отобразить те, которые содержат mp3 pathExtension:

let documents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
do {
    let playesItems = try FileManager.default.contentsOfDirectory(at: documents, includingPropertiesForKeys: nil).compactMap {
        $0.pathExtension == "mp3" ? $0.asset.playerItem : nil
    }
    for item in playesItems {
        print(item.asset.duration)
    }
} catch { print(error) }

Не забудьте добавить этих помощников в свой проект:

import UIKit
import AVKit

extension URL {
    var asset: AVAsset {
        return AVAsset(url: self)
    }
}
extension AVAsset {
    var playerItem: AVPlayerItem {
        return AVPlayerItem(asset: self)
    }
}
...