Можно ли добавить данные аудио файла в AVAudioPlayer?

Я добавил 10 аудио файлов (1.m4a,2.m4a,...,10.m4a) в свой локальный проект, и я преобразовал первую часть в данные и добавил в NSMutableData затем загрузите в плеер. работает хорошо. Теперь у меня есть кнопка, при нажатии кнопки я добавляю 3 части музыкальных файлов, но теперь она воспроизводится в avaudioplayer, Кто-нибудь знает, как я могу это сделать?

 func loadFirstnPlay() {
    if let url = Bundle.main.url(forResource: "1", withExtension: "m4a"){
        if let rawData = NSData(contentsOf: url) {
            arrSongsData.append(rawData as Data)
            do {
                avAudioPlyer = try AVAudioPlayer(data: arrSongsData as Data)
                avAudioPlyer.prepareToPlay()
                avAudioPlyer.delegate = self
                avAudioPlyer.play()
                print("Play")
            }catch{
                print("Error : ",error)
            }
        }
    }
}

onButtonClick

 func onButtonClick() {
    for i in 2...4{
        if let url = Bundle.main.url(forResource: "\(i)", withExtension: "m4a"){
            if let rawData = NSData(contentsOf: url) {
                arrSongsData.append(rawData as Data)
                print("\(i) : ",arrSongsData.length)
            }
        }
    }
}

1 ответ

Если вы хотите воспроизводить аудио один за другим, вы также можете использовать AVQueuePlayer с AVPlayerItem,

var arrSongItem:[AVPlayerItem] = []
var avQueuePlayer:AVQueuePlayer!

func loadFirstnPlay() {
    for i in 1...10 {
        if let url = Bundle.main.url(forResource: "\(i)", withExtension: "m4a"){
            let item = AVPlayerItem.init(url: url)
            arrSongItem.append(item)
        }
    }
    avQueuePlayer = AVQueuePlayer(items: arrSongItem)
    avQueuePlayer.play()
}

Вы также можете вставлять элементы, удалять элементы и рядом с текущим элементом, используя AVQueuePlayer объект.

Ссылка: AVQueuePlayer

Другие вопросы по тегам