Запись файла с помощью AVAudioRecorder, невозможно получить путь к файлу после записи

Вот код, который я использую для создания аудиофайла, здесь все работает нормально:

func startRecording() {
    let audioFilename = getDocumentsDirectory().appendingPathComponent("Meeting_Audio.m4a")

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

    do {
        audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
        audioRecorder.delegate = self
        audioRecorder.record()

    } catch {
        finishRecording(success: false)
    }
}

func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) {
    makeFileData()
}


@IBAction func onEndMeetingButtonClicked(_ sender: UIButton) {
    finishRecording(success: true)
}

func finishRecording(success: Bool) {
    audioRecorder.stop()
    audioRecorder = nil

    if success {
        print("recording succeeded :)")
    } else {
        print("recording failed :(")
    }
}

А вот упрощенная версия моей функции, которая по-прежнему воспроизводит проблему. Я вызываю эту функцию из audioRecorderDidFinishRecording. Кажется, я не могу получить путь к файлу.

func makeFileData() {

    if let filePath = Bundle.main.path(forResource: "Meeting_Audio", ofType: "m4a"){
        print("File path loaded.")

        if let fileData = NSData(contentsOfFile: filePath) {
            print("File data loaded.")
        }
    }
}

person Luke Morse    schedule 30.04.2017    source источник


Ответы (1)


Вы записываете файл в одно место:

// Documents directory!
let audioFilename = getDocumentsDirectory().appendingPathComponent("Meeting_Audio.m4a")

и читая его из другого:

// app bundle!
let filePath = Bundle.main.path(forResource: "Meeting_Audio", ofType: "m4a")

Попробуйте прочитать файл из того места, куда вы написали, например так:

if let fileUrl = Bundle.main.url(forResource: "Meeting_Audio", withExtension: "m4a"){
    print("File path loaded.")

    if let fileData = NSData(contentsOf: fileUrl) {
        print("File data loaded.")
    }
}
person Rhythmic Fistman    schedule 11.05.2017