AVAudioRecorder 를 사용하여 녹음 하고 재생하는 예제를 만들어 본다.
Main.storyboard 에서 record, start, stop 세개의 버튼을 만들고 컨트롤러 파일에 각각 outlet 과 액션을 연결한다.
아래는 ViewController.swfit 파일의 전체 코드이다.
import UIKit
import AVFoundation
class ViewController: UIViewController, AVAudioPlayerDelegate, AVAudioRecorderDelegate {
@IBOutlet weak var recordButton: UIButton!
@IBOutlet weak var stopButton: UIButton!
@IBOutlet weak var playButton: UIButton!
var audioPlayer: AVAudioPlayer?
var audioRecorder: AVAudioRecorder?
@IBAction func recordAudio(sender: AnyObject) {
if audioRecorder?.recording == false {
playButton.enabled = false
stopButton.enabled = true
audioRecorder?.record()
}
}
@IBAction func stopAudio(sender: AnyObject) {
stopButton.enabled = false
playButton.enabled = true
recordButton.enabled = true
if audioRecorder?.recording == true {
audioRecorder?.stop()
} else {
audioPlayer?.stop()
}
}
@IBAction func startAudio(sender: AnyObject) {
if audioRecorder?.recording == false {
stopButton.enabled = true
recordButton.enabled = false
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: (audioRecorder?.url)!)
audioPlayer!.delegate = self
audioPlayer!.prepareToPlay()
audioPlayer!.play()
} catch let error as NSError {
print("audioPlayer error: \(error.localizedDescription)")
}
}
}
func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) {
recordButton.enabled = true
stopButton.enabled = false
}
func audioPlayerDecodeErrorDidOccur(player: AVAudioPlayer, error: NSError?) {
print("Audio Play Decode Error")
}
func audioRecorderDidFinishRecording(recorder: AVAudioRecorder, successfully flag: Bool) {
}
func audioRecorderEncodeErrorDidOccur(recorder: AVAudioRecorder, error: NSError?) {
print("Audio Record Encode Error")
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
playButton.enabled = false
stopButton.enabled = false
let fileMgr = NSFileManager.defaultManager()
let dirPaths = fileMgr.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let soundFileURL = dirPaths[0].URLByAppendingPathComponent("sound.caf")
let recordSettings = [AVEncoderAudioQualityKey: AVAudioQuality.Min.rawValue, AVEncoderBitRateKey: 16,
AVNumberOfChannelsKey: 2, AVSampleRateKey: 44100.0]
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
} catch let error as NSError {
print("audioSession error: \(error.localizedDescription)")
}
do {
try audioRecorder = AVAudioRecorder(URL: soundFileURL, settings: recordSettings as! [String : AnyObject])
audioRecorder?.prepareToRecord()
} catch let error as NSError {
print("audioSession error: \(error.localizedDescription)")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
'programming language > swift' 카테고리의 다른 글
ios 동적 button , switch 사용하기 in swift (0) | 2016.09.25 |
---|---|
ios segue 사용하기 in swift (0) | 2016.09.20 |
ios AVAudioPlayer 사용 오디오 재생하기 in swift (0) | 2016.09.12 |
ios AVPlayer , 비디오 플레이 사용하기 in swift (0) | 2016.09.12 |
ios 카메라, 포토라이브러리 사용하기 in swift (0) | 2016.09.12 |