0
Моя полная реализация EZAudio
:EZAudio не работает: Резьба1 EXC_BAD_ACCESS при создании экземпляра EZRecorder
class ViewController: UIViewController, EZMicrophoneDelegate, EZRecorderDelegate {
@IBOutlet var recordingAudioPlot: EZAudioPlot!
private var isRecording = false {
didSet {
if isRecording {
player.pause()
recordingAudioPlot.clear()
microphone.startFetchingAudio()
recorder = EZRecorder(url: filePathUrl(), clientFormat: microphone.audioStreamBasicDescription(), fileType: EZRecorderFileType.M4A, delegate: self)
// ** Here is where the error occurs **
} else {
recorder.delegate = nil
microphone.stopFetchingAudio()
recorder.closeAudioFile()
player.playAudioFile(EZAudioFile(url: filePathUrl()))
}
}
}
private var microphone = EZMicrophone()
private var recorder = EZRecorder()
private var player = EZAudioPlayer()
@IBAction func startStopRecordingButtonTapped(_ sender: UIButton) {
isRecording = !isRecording
}
override func viewDidLoad() {
super.viewDidLoad()
let session = AVAudioSession.sharedInstance()
try! session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try! session.setActive(true)
microphone.delegate = self
try! session.overrideOutputAudioPort(.speaker)
}
func microphone(_ microphone: EZMicrophone!, hasAudioReceived buffer: UnsafeMutablePointer<UnsafeMutablePointer<Float>?>!, withBufferSize bufferSize: UInt32, withNumberOfChannels numberOfChannels: UInt32) {
DispatchQueue.main.async {
self.recordingAudioPlot.updateBuffer(buffer[0], withBufferSize: bufferSize)
}
}
func microphone(_ microphone: EZMicrophone!, hasBufferList bufferList: UnsafeMutablePointer<AudioBufferList>!, withBufferSize bufferSize: UInt32, withNumberOfChannels numberOfChannels: UInt32) {
if isRecording {
recorder.appendData(from: bufferList, withBufferSize: bufferSize)
}
}
private func filePathUrl() -> URL {
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first ?? ""
return URL(fileURLWithPath: String(format: "%@/%@", path, "pathtofile.m4a"))
}
}
Ошибка заключается в следующем:
Вы проверили, что все переменные установлены правильно, особенно filePathURL и asbd? – Volker
filePathUrl правильно ... что такое asbd? –
audiostreambasicdescription ... второй параметр, в общем: вы пытаетесь получить доступ к объекту по адресу памяти, который уже не существует в этом контексте ... поэтому проверьте, какой из различных объектов, возможно, не существует ... должно быть легко делать в xcodes отладчик view – Volker