View
[Swift 개념] AVAudioPlayer 클래스 - 음악 재생과 제어
지금 부스트코스에서 iOS 프로그래밍 강좌를 들으면서 Swift를 공부하는 중이예요. 확실히 작은 프로젝트지만 직접 만들어보면서 공부를 하는게 눈에 보이는 결과물도 나오고 따라갈 이정표가 있어서 공부하기 좋은 것 같네요! 계정 가입절차가 까다로운 것도 아니고 강의 자체도 무료공개라서 저처럼 iOS 개발 공부를 시작하시는 분은 들어보면 좋을 것 같아요.
지금 강좌를 수강하면서 만들고 있는 음악플레이어에 들어가는 AVAudioPlayer 클래스에 대해 더 자세히 찾아보고자 이 글을 포스팅합니다!
AVAudioPlayer
AVFoundation에 포함되어있는 클래스로, 파일이나 메모리에 저장된 음악을 재생하는 장치와 제어하는 역할을 한다.
Apple Developer Documents 기준으로 다음과 같은 역할을 수행할 수 있네요.
- Play sounds of any duration
- Play sounds from files or memory buffers
- Loop sounds
- Play multiple sounds simultaneously, one sound per audio player, with precise synchronization
- Control relative playback level, stereo positioning, and playback rate for each sound you are playing
- Seek to a particular point in a sound file, which supports such application features as fast forward and rewind
- Obtain data you can use for playback-level metering
AVAudioPlayer 초기화
AVAudioPlayer의 Init 방법은 크게보면 두 가지의 생성 방법이 있다. 일단 음악을 재생하는 역할을 하기에 음악파일을 인자로 전달해줘야하고, 그 방식이 데이터를 주는 방식 / 주소를 주는 방식 으로 나뉘어있다.
var player : AVAudioPlayer!
player = AVAudioPlayer(data: Data)
player = AVAudioPlayer.init(data: Data)
player = AVAudioPlayer(url: Url)
player = AVAudioPlayer.init(url: Url)
첫번째 방법은 미리 load 해둔 오디오파일을 가져와 player에 넣어주는 것이고, 두번째 방법은 찾아둔 url 타입의 주소를 전달해 오디오파일을 player에 넣어주는 것이다.
재생과 제어
기본 함수들
func play() -> Bool
를 통해 넣어둔 사운드의 재생이 가능하다.func play(atTime: TimeInterval) -> Bool
를 통해 원하는 시점부터 재생이 가능하다.func pause()
일시정지func stop()
정지 + 초기화func prepareToPlay() -> Bool
사운드 재생전에 미리 로드해두고 딜레이를 최소화할 수 있다.func setVolume(Float, fadeDuration: TimeInterval)
지정해준 시간동안 볼륨을 지정한 크기로 천천히 이동한다.
TimeInterval은 특별한 타입이 아니예요.시간간격을 나타낼 때 사용하는 Double타입의 별명이라고 보면 편할 것 같네요. 처음 코드를 마주했을때는 이게 별도의 타입이라고 생각했는데, 그냥 시점과 시점사이의 간격을 초 단위로 Double 형으로 나타낸 것이라고 생각하면 됩니다!
기본 변수들
isPlaying: Bool
현재 재생중인지 Boolean 값으로 가져올 수 있다.volume: Float
소리의 크기 값에 해당 (0.0~1.0)rate: Float
재생속도 (1.0이 정상 속도에 해당!)numberOfLoops: Int
반복횟수 설정duration: TimeInterval
AVAudioPlayer에 등록된 사운드 파일의 총 실행시간currentTime: TimeInterval
AVAudioPlayer에서 재생중인 사운드 파일의 현재 재생되는 시각
참고자료
https://developer.apple.com/documentation/avfoundation/avaudioplayer
'Develop > iOS 개발' 카테고리의 다른 글
[iOS 앱 개발] Human Interface Guideline - App Architecture (1) (1) | 2019.07.30 |
---|---|
[Swift 기본 문법] Swift를 처음봤을 때 낯선 문법들 (1) | 2019.07.29 |
[Swift 기초 개념] View, Window (7) | 2019.07.25 |
[Swift 기초 개념] 코코아 프레임워크, 코코아 터치, 코코아 팟이란? (2) | 2019.07.20 |
[Swift 기초 개념] UIButton Class (0) | 2019.07.15 |