deda9 / AVFoundationExample

Learn how to play and record audio

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Learn how to Play audio by AVAudioPlayer

lazy var songURL: URL = {
    let url = Bundle.main.url(forResource: "om", withExtension: "m4a")
    return url!
}()

lazy var player: AVAudioPlayer = {
    do  {
        let player = try AVAudioPlayer(contentsOf: self.songURL)
        player.delegate = self
        player.numberOfLoops = .max
        player.prepareToPlay()
        return player
    } catch {
        fatalError(error.localizedDescription)
    }
}()

var isPlaying: Bool  {
    self.player.isPlaying
}

func play() {
    guard !self.player.isPlaying else {
        return
    }
    self.player.play()
    self.tracePlayingTime()
}

Learn how to record audio by AVAudioRecorder

lazy var recordURL: URL = {
    var documentsURL: URL = {
        let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
        return paths.first!
    }()

    let url = documentsURL.appendingPathComponent("newRecord.m4a")
    return url
}()

lazy var recorder: AVAudioRecorder = {
    do  {
        let settings = [
            AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
            AVSampleRateKey: 12000,
            AVNumberOfChannelsKey: 1,
            AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
        ]

        let recorder = try AVAudioRecorder.init(url: recordURL, settings: settings)
        recorder.delegate = self
        return recorder
    } catch {
        fatalError(error.localizedDescription)
    }
}()

func record() {
    self.requestRecordPermission { [weak self] permissionGranted, error in
        guard let self = self else { return }
        guard !self.recorder.isRecording else {
            return
        }
        self.recorder.record()
    }
}

About

Learn how to play and record audio


Languages

Language:Swift 100.0%