Запись звука на WatchOS через AVAudioRecorder - PullRequest
0 голосов
/ 01 июня 2019

Есть ли примеры кода или учебники по этому поводу?Я обнаружил, что AVAudioRecorder поддерживается начиная с WatchOS 4.0 https://developer.apple.com/documentation/avfoundation/avaudiorecorder. Но когда я пытаюсь использовать его - он записывает 1 секунду и никакого реального звука (только шум).

Вот мой код:

let audioURL = self.getRecordedFileURL()
print(audioURL.absoluteString)

let settings = [
  AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
  AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]

do {
  recorder = try AVAudioRecorder(url: audioURL, settings: settings)
  recorder?.delegate = self
  recorder?.record()
} catch {
  finishRecording(success: false)
}

Кроме того, я должен использовать AudioSession здесь?Если да, то требуется ли requestRecordPermission и как с этим бороться?Спасибо за помощь!

1 Ответ

1 голос
/ 01 июня 2019

Это работает:

    let recordingName = "audio.m4a"
    let dirPath = getDirectory()
    let pathArray = [dirPath, recordingName]
    guard let filePath = URL(string: pathArray.joined(separator: "/")) else { return }

    let settings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
                    AVSampleRateKey:12000,
                    AVNumberOfChannelsKey:1,
                    AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
    ]

    //start recording
    do {
        audioRecorder = try AVAudioRecorder(url: filePath, settings: settings)
        audioRecorder.delegate = self
        audioRecorder.record()
    } catch {
        print("Recording Failed")
    }
func getDirectory()-> String {
    let dirPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
    return dirPath
}

Не забудьте добавить NSMicrophoneUsageDescription в ваш телефон вспомогательное приложение Info.plist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...