Ios AVAudioRecorder仅适用于.record(持续时间:)
在我的一生中,我一直无法使用Ios AVAudioRecorder仅适用于.record(持续时间:),ios,swift,avfoundation,avaudiosession,avaudiorecorder,Ios,Swift,Avfoundation,Avaudiosession,Avaudiorecorder,在我的一生中,我一直无法使用record()方法让avaudiorecord正确录制声音。如果我使用录制(forDuration:)方法,我只能录制声音。我已经尝试过多种设备(iPhone8W/iOS 14、iPadAir(第七代)w/iOS 14、iPhone12迷你模拟器)。我还将构建目标从iOS 13更改为iOS 9,并在较旧的模拟器(iPhone8w/iOS 10)上进行了尝试 不管怎样,无论我的设备/iOS组合如何,行为都是一样的-停止录制时record()总是生成一个空的4kb音频文
record()
方法让avaudiorecord
正确录制声音。如果我使用录制(forDuration:)
方法,我只能录制声音。我已经尝试过多种设备(iPhone8W/iOS 14、iPadAir(第七代)w/iOS 14、iPhone12迷你模拟器)。我还将构建目标从iOS 13更改为iOS 9,并在较旧的模拟器(iPhone8w/iOS 10)上进行了尝试
不管怎样,无论我的设备/iOS组合如何,行为都是一样的-停止录制时record()
总是生成一个空的4kb音频文件。我已经研究了模拟器容器,并下载了设备容器来验证这一点。同样,record(forDuration:)
将用实际录制的声音保存一个合适的音频文件
Xcode版本:12.3
罪犯代码:
func recordAudio() {
let dirPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let recordingName = "recordedVoice.m4a"
let pathArray = [dirPath, recordingName]
let filePath = URL(string: pathArray.joined(separator: "/"))
let session = AVAudioSession.sharedInstance()
try! session.setCategory(.playAndRecord, mode: .default, options: .defaultToSpeaker)
try! session.setActive(true)
try! self.audioRecorder = AVAudioRecorder(url: filePath!, settings: [:])
self.audioRecorder.delegate = self
self.audioRecorder.isMeteringEnabled = true
self.audioRecorder.prepareToRecord()
// Problematic section
// I only use one of the following two lines, record() fails, record(forDuration:) works.
self.audioRecorder.record()
self.audioRecorder.record(forDuration: 5)
}
func stopRecord() {
self.audioRecorder.stop()
let audioSession = AVAudioSession.sharedInstance()
try! audioSession.setActive(false)
}
record()
的静默故障-没有错误或崩溃
我刚刚发现了另一件有趣的事情。当我调用audioRecorder.stop()
时,应用程序无法正确保存音频文件。无论我是使用record()
还是record(持续时间:)
我很困惑。感谢您的帮助
记录()的静默故障-没有错误或崩溃
在实例化AVAudioRecorder
时,我得到一个'fmt?
错误。提供设置字典可以修复它
let settings = [
AVFormatIDKey: kAudioFormatMPEG4AAC,
AVSampleRateKey: 44100,
AVNumberOfChannelsKey: 1
]
try! self.audioRecorder = AVAudioRecorder(url: filePath!, settings: settings)
记录()的静默故障-没有错误或崩溃
在实例化AVAudioRecorder
时,我得到一个'fmt?
错误。提供设置字典可以修复它
let settings = [
AVFormatIDKey: kAudioFormatMPEG4AAC,
AVSampleRateKey: 44100,
AVNumberOfChannelsKey: 1
]
try! self.audioRecorder = AVAudioRecorder(url: filePath!, settings: settings)