Skip to content
This repository has been archived by the owner on Mar 29, 2021. It is now read-only.

APP CRASH ERROR LIKE "format.sampleRate" #13

Open
akashrtridhya opened this issue Jul 10, 2020 · 1 comment
Open

APP CRASH ERROR LIKE "format.sampleRate" #13

akashrtridhya opened this issue Jul 10, 2020 · 1 comment

Comments

@akashrtridhya
Copy link

Hello sir,

I am getting below error while recording audio in foreground

Error:
required condition is false: [AVAudioIONodeImpl.mm:1064:SetOutputFormat: (format.sampleRate == hwFormat.sampleRate)]

Xcode :11.4.1
Language swift 4.2
MacOS: Catalina version 10.15.5
Iphone : 8plus
iphone Os: 13.3.1

Below is my code:

File name: RecorderViewContrlloer

let settings = [AVFormatIDKey: kAudioFormatLinearPCM, AVLinearPCMBitDepthKey: 16, AVLinearPCMIsFloatKey: true, AVSampleRateKey: Float(16000.0), AVNumberOfChannelsKey: 1] as [String : Any]

    self.recordingTs = NSDate().timeIntervalSince1970
    self.silenceTs = 0
    do {
        let session = AVAudioSession.sharedInstance()
        try session.setCategory(.playAndRecord, mode: .default)
        try session.setActive(true)
    } catch let error as NSError {
        print(error.localizedDescription)
        return
    }
    let inputNode = self.audioEngine.inputNode
    guard let format = self.format() else {
        return
    }

// let format = inputNode.inputFormat(forBus: 0)

    inputNode.installTap(onBus: 0, bufferSize: 512, format: format) { (buffer, time) in
        
        let level: Float = -50
        let length: UInt32 = 1024
        buffer.frameLength = length
        let channels = UnsafeBufferPointer(start: buffer.floatChannelData, count: Int(buffer.format.channelCount))
        var value: Float = 0
        vDSP_meamgv(channels[0], 1, &value, vDSP_Length(length))
        var average: Float = ((value == 0) ? -100 : 20.0 * log10f(value))
        if average > 0 {
            average = 0
        } else if average < -100 {
            average = -100
        }
        let silent = average < level
        print(self.audioEngine.manualRenderingSampleTime)
        let ts = NSDate().timeIntervalSince1970
        self.totLTs = ts
        if ts - self.renderTs > 0.1 {
            let floats = UnsafeBufferPointer(start: channels[0], count: Int(buffer.frameLength))
            let frame = floats.map({ (f) -> Int in
                return Int(f * Float(Int16.max))
            })
            DispatchQueue.main.async
                {
                    self.renderTs = ts
                    let len = self.audioView.waveforms.count
                    for i in 0 ..< len {
                        let idx = ((frame.count - 1) * i) / len
                        let f: Float = sqrt(1.5 * abs(Float(frame[idx])) / Float(Int16.max))
                        self.audioView.waveforms[i] = min(49, Int(f * 50))
                    }
                    self.audioView.active = !silent
                    self.audioView.setNeedsDisplay()
            }
        }
        
        let write = true
        if write {
            if self.audioFile == nil {
                self.audioFile = self.createAudioRecordFile()
            }
            if let f = self.audioFile {
                do {
                    try f.write(from: buffer)
                } catch let error as NSError {
                    print(error.localizedDescription)
                }
            }
        }
    }
    do {
        recorder = try AVAudioRecorder(url: self.fileUrl(), settings: settings)
        recorder?.delegate = self
        recorder?.isMeteringEnabled = true
        recorder?.prepareToRecord()
        self.audioEngine.prepare()
        try self.audioEngine.start()
    } catch let error as NSError {
        print(error.localizedDescription)
        return
    }
    self.updateUI(.recording)
}

Above is my code of recording. Application is crash on inputNode.installTap(onBus: 0, bufferSize: 512, format: format) { (buffer, time) in

And give error like above mention

We have to deploy the application so please suggest and guide us for this issue

Look forward to hearing from you soon..
Regards
Akash

@akashrtridhya
Copy link
Author

Please update

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant