View

300x250

[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

https://zeddios.tistory.com/269

320x100
Share Link
reply
반응형
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31