AVAudioEngine для NSData - файл wav не воспроизводится на сервере

Я пытаюсь записать звук с помощью AVAudioEngine. Файл записывается и воспроизводится корректно. Однако мне также нужно отправить AVAudioPCMBuffer, который я получаю в обработчике крана, на мой сервер через сокет. Я конвертирую AVAudioPCMBuffer в NSData и отправляю его. Сервер получает его, однако файл на сервере воспроизводится некорректно. Я что-то упустил при преобразовании AVAudioPCMBuffer в NSData или в моей записи отсутствует какая-то конфигурация.

Любая помощь будет оценена, ребята. Спасибо!

let audioEngine  = AVAudioEngine()
let inputNode = audioEngine.inputNode
let bus = 0

 try file = AVAudioFile(forWriting: URLFor("recording.wav")!, settings: audioEngine.inputNode!.inputFormatForBus(0).settings)


inputNode!.installTapOnBus(bus, bufferSize: 4096, format: inputNode!.inputFormatForBus(bus)) {
                (buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in


  self.file?.writeFromBuffer(buffer)  
  self.socketio.send(self.toNSData(buffer))

}

 do{
    audioEngine.prepare()
    try audioEngine.start()
}
catch{
    print("catch")
}



func toNSData(PCMBuffer: AVAudioPCMBuffer) -> NSData {
    let channelCount = 1  // given PCMBuffer channel count is 1
    let channels = UnsafeBufferPointer(start: PCMBuffer.floatChannelData, count: channelCount)
    let ch0Data = NSData(bytes: channels[0], length:Int(PCMBuffer.frameCapacity * PCMBuffer.format.streamDescription.memory.mBytesPerFrame))
    return ch0Data
}

person Rahul Ahuja    schedule 07.10.2016    source источник
comment
У меня нет ответа, но есть лишь некоторые мысли о том, как определить, где возникает ошибка. Можете ли вы каким-то образом проверить, что ваша функция toNSData генерирует действительные NSData? Например... можете ли вы сами играть из данных в приложении? (просто чтобы попытаться определить, являются ли данные, которые вы создаете, действительными, и у сервера есть проблема, или действительно ли данные, которые вы создаете, недействительны)   -  person pbodsk    schedule 07.10.2016
comment
Я не умею играть в NSData :( С сервером проблем нет, так же работает и на Android   -  person Rahul Ahuja    schedule 07.10.2016
comment
Возможно, вы могли бы использовать AVAudioPlayer для этого? (как описано здесь: stackoverflow.com/questions/32510346/). Я не знаю, поможет ли это вам, я просто подумал, что было бы неплохо определить, где возникает ошибка (данные недействительны или с ними что-то происходит во время передачи на сервер)   -  person pbodsk    schedule 07.10.2016
comment
Я попробую это. Однако, если у кого-то есть лучшее представление о том, почему это не работает, я был бы признателен.   -  person Rahul Ahuja    schedule 07.10.2016