私はAVAudioRecorder
を使用して人間の声を録音しています。次のように私のコードは次のとおりです。AVAudioRecorder never records
// Property of Class
var recorder:AVAudioRecorder?
func recordButtonTapped() {
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryRecord)
try audioSession.setActive(true)
if audioSession.recordPermission() != .granted {
audioSession.requestRecordPermission({ (success) in
self.startRecording()
})
}
else {
self.startRecording()
}
} catch {
print("Unable To Set Category")
}
}
func startRecording() {
// libraryPathWith(media) just gets the path to the documents directory
// Like so: Documents/MediaLibrary/Audio/<mediaID>.<mediaExtension>
if let path = MMFileManager.libraryPathWith(media: self.media) {
isRecording = true
do {
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 44100,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
recorder = try AVAudioRecorder(url: path, settings: settings)
recorder?.delegate = self
if recorder!.prepareToRecord() {
recorder?.record()
}
}
catch {
isRecording = false
}
}
}
func stopRecording() {
self.recordingLabel.text = "Recording Complete"
self.recordingLabel.textColor = UIColor.white
if let rec = recorder {
rec.stop()
recorder = nil
}
isRecording = false
}
AVAudioRecorderDelegate
func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) {
print("RECORDED AUDIO SUCCESSFULLY \(flag)")
}
func audioRecorderEncodeErrorDidOccur(_ recorder: AVAudioRecorder, error: Error?) {
print("AUDIO RECORDER ERROR \(error?.localizedDescription)")
}
私はaudioRecorderEncodeErrorDidOccur
関数が呼び出されることは決してありませんが、audioRecorderDidFinishRecording
機能はありませんが、flag
があるAVAudioRecorderに停止を呼び出した後、常にfalse
。それは私がI上記のコードを使って録音する場合"RECORDED AUDIO SUCCESSFULLY false"
QUESTION
を出力し、指定された場所で私のドキュメントディレクトリにファイルを保存しません。しかし、このファイルは私がプレイできるものではありません。拡張子を.aac
と指定したので、オーディオファイルではなくテキストファイルに書き出します。
なぜAVAudioRecorder
はオーディオを録音しませんか?そして私はそれをどうやって行うのですか?