Можно ли добавить данные аудио файла в 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