【问题标题】:Is it possible to append Data of audio file in AVAudioPlayer?是否可以在 AVAudioPlayer 中附加音频文件的数据?
【发布时间】:2018-02-09 07:58:14
【问题描述】:

i'hv 在我的本地项目中添加了 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)
            }
        }
    }
}

点击按钮

 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)
            }
        }
    }
}

【问题讨论】:

  • onButtonClick你必须播放下一个音频,对吧?
  • @JayeshThanki 是的,但是如果我之前的曲目正在播放,那么音频数据需要附加到当前正在播放的数据中
  • 您找到解决方案了吗?
  • @SemyonTikhonenko nop 我用Extended Audio File Services 播放队列歌曲,它适合我的需要。

标签: ios nsdate avaudioplayer nsmutabledata


【解决方案1】:

如果您想一一播放音频,也可以使用AVQueuePlayerAVPlayerItem

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

【讨论】:

  • 是的!但我想附加播放原始数据,如队列。第 1 首曲目正在播放,然后第 2 首曲目需要追加,不能直接播放
  • 你可以通过这个insert(_:after:)函数在队列中动态插入项目。
  • 感谢您的回复,我知道这一点,但我的主要目标是将 NSData 附加到播放器而不是项目中。最后它像单个文件一样工作
  • 因此您必须将音频文件合并到一个文件中,然后您必须转换为NSData才能播放音频。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2020-11-26
  • 2011-01-17
相关资源
最近更新 更多