是否可以在AVAudioPlayer中附加音频文件的数据?

时间:2018-02-09 07:58:15

标签: ios nsdate avaudioplayer nsmutabledata

我在本地项目中添加了10个音频文件(1.m4a,2.m4a,...,10.m4a),我将第一部分转换为数据并附加到NSMutableData然后加载在球员中。工作得很好。 现在我有按钮,onClick按钮我追加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 个答案:

答案 0 :(得分:0)

如果您想逐个播放音频,那么您也可以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