제가 Swift2로 녹음하고 재생할 수 있는 간이 녹음기를 만들어 봤어요.
시도해 본 일
실시간으로 소리를 감시할 수 있는 앱을 만들기 위해 "녹음하고 틀어주세요!"인터넷에서 찾아보면서 샘플 앱을 만들어 봤어요.
나는 그것을 녹음하고 재생하는 최소한의 기능만 했다.상태 변경 버튼에 표시되지 않습니다.
이 기사가 참고가 될 수도 있어요.
너는 이런 물건을 만들 수 있다
약간의 해설 소스 코드
단지 원본 코드에 논평의 해설을 추가했을 뿐이다.
만약 모르는 점이 있으면 사양하지 말고 이 보도에 대한 평론에서 질문하세요.//
// ViewController.swift
// AVRecorderSample
//
// Created by yokoyama.tatsuya on 2016/02/13.
// Copyright © 2016年 yokoyama.tatsuya. All rights reserved.
//
import UIKit
import AVFoundation
class ViewController: UIViewController {
// file操作をするときに役立つNSFileManager
// 録音したファイルをDocmentsディレクトリに保存しています。
// 他にもtmpディレクトリやLibrary/Cachesディレクトリなんかがあるので、
// 興味あればググってください
let fileManager = NSFileManager()
var audioRecorder: AVAudioRecorder?
var audioPlayer: AVAudioPlayer?
let fileName = "sample.caf"
@IBOutlet weak var recordButton: UIButton!
@IBOutlet weak var playButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
self.setupAudioRecorder()
}
// 録音ボタンを押した時の挙動
@IBAction func pushRecordButton(sender: AnyObject) {
audioRecorder?.record()
}
// 再生ボタンを押した時の挙動
@IBAction func pushPlayButton(sender: AnyObject) {
self.play()
}
// 録音するために必要な設定を行う
// viewDidLoad時に行う
func setupAudioRecorder() {
// 再生と録音機能をアクティブにする
let session = AVAudioSession.sharedInstance()
try! session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try! session.setActive(true)
let recordSetting : [String : AnyObject] = [
AVEncoderAudioQualityKey : AVAudioQuality.Min.rawValue,
AVEncoderBitRateKey : 16,
AVNumberOfChannelsKey: 2,
AVSampleRateKey: 44100.0
]
do {
try audioRecorder = AVAudioRecorder(URL: self.documentFilePath(), settings: recordSetting)
} catch {
print("初期設定でerror出たよ(-_-;)")
}
}
// 再生
func play() {
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: self.documentFilePath())
} catch {
print("再生時にerror出たよ(´・ω・`)")
}
audioPlayer?.play()
}
// 録音するファイルのパスを取得(録音時、再生時に参照)
// swift2からstringByAppendingPathComponentが使えなくなったので少し面倒
func documentFilePath()-> NSURL {
let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) as [NSURL]
let dirURL = urls[0]
return dirURL.URLByAppendingPathComponent(fileName)
}
}
guthub도 드릴게요.
Reference
이 문제에 관하여(제가 Swift2로 녹음하고 재생할 수 있는 간이 녹음기를 만들어 봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yoda2020/items/2abc7ce9d7f598bf6409
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
단지 원본 코드에 논평의 해설을 추가했을 뿐이다.
만약 모르는 점이 있으면 사양하지 말고 이 보도에 대한 평론에서 질문하세요.
//
// ViewController.swift
// AVRecorderSample
//
// Created by yokoyama.tatsuya on 2016/02/13.
// Copyright © 2016年 yokoyama.tatsuya. All rights reserved.
//
import UIKit
import AVFoundation
class ViewController: UIViewController {
// file操作をするときに役立つNSFileManager
// 録音したファイルをDocmentsディレクトリに保存しています。
// 他にもtmpディレクトリやLibrary/Cachesディレクトリなんかがあるので、
// 興味あればググってください
let fileManager = NSFileManager()
var audioRecorder: AVAudioRecorder?
var audioPlayer: AVAudioPlayer?
let fileName = "sample.caf"
@IBOutlet weak var recordButton: UIButton!
@IBOutlet weak var playButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
self.setupAudioRecorder()
}
// 録音ボタンを押した時の挙動
@IBAction func pushRecordButton(sender: AnyObject) {
audioRecorder?.record()
}
// 再生ボタンを押した時の挙動
@IBAction func pushPlayButton(sender: AnyObject) {
self.play()
}
// 録音するために必要な設定を行う
// viewDidLoad時に行う
func setupAudioRecorder() {
// 再生と録音機能をアクティブにする
let session = AVAudioSession.sharedInstance()
try! session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try! session.setActive(true)
let recordSetting : [String : AnyObject] = [
AVEncoderAudioQualityKey : AVAudioQuality.Min.rawValue,
AVEncoderBitRateKey : 16,
AVNumberOfChannelsKey: 2,
AVSampleRateKey: 44100.0
]
do {
try audioRecorder = AVAudioRecorder(URL: self.documentFilePath(), settings: recordSetting)
} catch {
print("初期設定でerror出たよ(-_-;)")
}
}
// 再生
func play() {
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: self.documentFilePath())
} catch {
print("再生時にerror出たよ(´・ω・`)")
}
audioPlayer?.play()
}
// 録音するファイルのパスを取得(録音時、再生時に参照)
// swift2からstringByAppendingPathComponentが使えなくなったので少し面倒
func documentFilePath()-> NSURL {
let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) as [NSURL]
let dirURL = urls[0]
return dirURL.URLByAppendingPathComponent(fileName)
}
}
guthub도 드릴게요.
Reference
이 문제에 관하여(제가 Swift2로 녹음하고 재생할 수 있는 간이 녹음기를 만들어 봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yoda2020/items/2abc7ce9d7f598bf6409
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(제가 Swift2로 녹음하고 재생할 수 있는 간이 녹음기를 만들어 봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoda2020/items/2abc7ce9d7f598bf6409텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)