상세 컨텐츠

본문 제목

[iOS] 음악재생, 녹음하는앱(4) - 재생시간표시, 녹음파일 형성

SWIFT

by 옹홍 2021. 2. 11. 01:30

본문

ProgressTimer에서 TImer.scheduledTimer 함수를 사용해서 0.1초 간격으로 타이머를 생성하도록 구현한다.

버튼을 누를시에 Timer.scheduledTimer 가 호출된다.

timeInterval = 얼마의 간격의 기준으로 동작 여기서는 0.1초이다.

target = Timer을 동작시킬대상, 여기서는 self는 뷰컨을 나타낸다. timer가 뷰컨 안에 있기때문이다. 

selector = timeInterval 에서 정해준 시간이 지날때마다 호출되는 함수 여기서는 timePlayerSelector

위의 함수에서 timeplayerSelector는 updatePlayTime이라는 함수를 부른다.

이를 살펴보면 lblCurrentTime.text 에 audioPlayer.currentTime을 String으로 변환해서 넣어준다. 또한 ProgressPlay.progress에 전체 재생시간에서 currentTime의 퍼센트를 넣어준다.

userInfo = 타이머 동작시 전달할 객체 지정

repeats = 타이머 반복 여부

<녹음파일 형성> 

파일을 형성하는데 있어서 중요한 것은 어디에 저장할 것인지이다!! 이때 documentDirectory 안에 저장이 될 것이다. 그렇다면 이 다큐먼트디렉토리가 어디있을지 알아야 한다. 그렇다면 처음할일은 DocumentDirectory URL을 얻는 것이다. 

 let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

이것이 방법이다. FileManager.default 라는 싱글톤 인스턴스의 urls 메소드의 첫번째요소를 빼오는 듯한대요?!

urls 메소드는 요청된 도메인에서 지정된 공통 디렉토리에 대한 url의 배열을 뽑아오는 것이다.

뭐 이렇게 하면 도큐먼트디렉토리의 url을 알게된것이다.

그렇다면 파일이름을 정하는 것은

audioFile = documentDirectory.appendingPathComponent("recordFile.m4a")

recordFile.m4a 파일을 만들고 이를 audioFile에 넣는다.

이게 ViewDidLoad 에 들어가니 selectAudioFile에서는 녹음모드 맞는지 아닌지 알고, 녹음모드라면, 파일을 저장할 도큐먼트디렉토리의 url을 알고, 그 안에 record.m4a 파일을 만들고, 이것을 AVAudioPlayer 인스턴스인 audioPlayer 에 넣는다!!

관련글 더보기

댓글 영역