๋ณธ ๊ฒ์๊ธ์ edwith ๋ถ์คํธ์ฝ์ค iOS ํ๋ก๊ทธ๋๋ฐ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ฑํ ๊ฒ์๊ธ ์ ๋๋ค.
AVFoundation
Objective-C ๋ฐ Swift์ API๊ฐ ํฌํจ ๋ ๋ฉํฐ๋ฏธ๋์ด ํ๋ ์ ์ํฌ๋ก, Apple Darwin ๊ธฐ๋ฐ ์ด์ ์ฒด์ (iOS, macOS, tvOS ๋ฐ watchOS)์์ ์๊ฐ ๊ธฐ๋ฐ ์์ฒญ๊ฐ ๋ฏธ๋์ด ์์ ์ ์ํ ๊ณ ๊ธ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ๋ฏธ๋์ด ์ฌ์ ๋ฐ ํธ์ง(QuickTime ๋์์ ๋ฐ MPEG-4 ํ์ผ ์ฌ์/์์ฑ/ํธ์ง, HLS ์คํธ๋ฆผ ์ฌ์: ์ฌ์๊ฐ๋ฅ ํ์ผ ๋ชฉ๋ก ๋งํฌ)
- ๋๋ฐ์ด์ค ์นด๋ฉ๋ผ์ ๋ง์ดํฌ๋ฅผ ์ด์ฉํ ์์ ๋ นํ ๋ฐ ์ฌ์ด๋ ๋ น์
- ์์คํ ์ฌ์ด๋ ์ ์ด
- ๋ฌธ์์ ์์ฑํ
AVAudioPlayer Class
ํ์ผ ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ฌ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
- ํ์ผ ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ฌ์ด๋ ์ฌ์(๋คํธ์ํฌ์ ์๋ ์ฌ์ด๋ ํ์ผ์ ์ฌ์ ๋ถ๊ฐ)
- ํ์ผ ์ฌ์ ์๊ฐ ๊ธธ์ด์ ์ ํ์์ด ์ฌ์ด๋ ์ฌ์
- ์ฌ๋ฌ ๊ฐ ์ฌ์ด๋ ํ์ผ ๋์ ์ฌ์
- ์ฌ์ด๋์ ์ฌ์ ์๋ ์ ์ด ๋ฐ ์คํ ๋ ์ค ํฌ์ง์ ๋
- ์์ผ๋ก ๊ฐ๊ธฐ์ ๋ค๋ก ๊ฐ๊ธฐ ๋ฑ์ ๊ธฐ๋ฅ์ ์ง์ํด ์ฌ์ด๋ ํ์ผ์ ํน์ ์ง์ ์ฐพ๊ธฐ
- ํ์ฌ ์ฌ์ ์ ๋ณด ๋ฐ์ดํฐ ์ป๊ธฐ
- ์ฌ์ด๋ ๋ฐ๋ณต์ฌ์ ๊ธฐ๋ฅ
AVAudioPlayer ์ฃผ์ ํ๋กํผํฐ
- var isPlaying: Bool: ์ฌ์ด๋๊ฐ ํ์ฌ ์ฌ์๋๊ณ ์๋์ง ์๋์ง ์ฌ๋ถ
- var volume: Float: ์ฌ์ด๋์ ๋ณผ๋ฅจ๊ฐ, ์ต์ 0.0 ~ ์ต๋ 1.0
- var rate: Float: ์ฌ์ด๋์ ์ฌ์ ์๋
- var numberOfLoops: Int: ์ฌ์ด๋ ์ฌ์ ๋ฐ๋ณต ํ์
- ๊ธฐ๋ณธ๊ฐ์ 0์ผ๋ก ์ฌ์ด๋ 1ํ ์ฌ์ ํ ์๋ ์ข ๋ฃ
- ์์๊ฐ์ผ๋ก ์ค์ ์ ์ค์ ๊ฐ+1ํ ์ฌ์(ex. 1๋ก ์ค์ ์ 2ํ ์ฌ์ ํ ์ข ๋ฃ)
- ์์๊ฐ์ผ๋ก ์ค์ ์ stop ๋ฉ์๋๊ฐ ํธ์ถ ๋ ๋๊น์ง ๋ฌดํ ์ฌ์
- var dutation: TimeInterval: ์ฌ์ด๋์ ์ด ์ฌ์ ์๊ฐ(์ด ๋จ์)
- var currentTime: TimeInterval: ์ฌ์ด๋์ ํ์ฌ ์ฌ์ ์๊ฐ(์ด ๋จ์)
- protocol AVAudioPlayerDelegate: ์ฌ์ด๋ ์ฌ์ ์๋ฃ, ์ฌ์ ์ค๋จ ๋ฐ ๋์ฝ๋ฉ ์ค๋ฅ์ ์๋ตํ ์ ์๋ ํ๋กํ ์ฝ
AVAudioPlayer ์ฃผ์ ๋ฉ์๋
- AVAudioPlayer ์ด๊ธฐํ ๋ฉ์๋
// ํน์ ์์น์ ์๋ ์ฌ์ด๋ ํ์ผ๋ก ์ด๊ธฐํ
func init(contentOf: URL)
// ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ์ด๊ธฐํ
func init(data: Data)
- AVAudioPlayer ์ฌ์๊ด๋ จ ๋ฉ์๋
// ์ฌ์ด๋ ์ฌ์
func play()
// ํน์ ์์ ์์ ์ฌ์ด๋ ์ฌ์
func play(atTime: TimeInterval)
// ์ฌ์ด๋ ์ผ์ ์ ์ง
func pause()
// ์ฌ์ด๋ ์ฌ์ ์ ์ง
func stop()
Timer
ํ์ด๋จธ ํด๋์ค๋ ์ผ์ ๊ฐ๊ฒฉ์ด ๊ฒฝ๊ณผ๋๋ฉด ํ๊ฒ ์ค๋ธ์ ํธ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค.
Timer ํน์ง
- ํ์ด๋จธ๋ ๋ฐ ๋ฃจํ(run loops)์์ ์๋
- ํ์ด๋จธ๋ฅผ ์์ฑํ ๋ ๋ฐ๋ณต ์ฌ๋ถ๋ฅผ ์ง์
- ๋น ๋ฐ๋ณต ํ์ด๋จธ: ํ ๋ฒ ์คํ๋ ๋ค์ ์๋์ผ๋ก ๋ฌดํจํ
- ๋ฐ๋ณต ํ์ด๋จธ: ๋์ผํ ๋ฐ ๋ฃจํ์์ ํน์ TimeInterval ๊ฐ๊ฒฉ์ผ๋ก ์คํ. ๋ฐ๋ณต๋๋ ํ์ด๋จธ ๊ธฐ๋ฅ์ ์ ์งํ๋ ค๋ฉด invalidate() ๋ฉ์๋๋ฅผ ํธ์ถ
Timer ์ฃผ์ ํ๋กํผํฐ
- var isValid: Bool: ํ์ด๋จธ๊ฐ ํ์ฌ ์ ํจํ์ง ์๋์ง ์ฌ๋ถ
- var fireDate: Date: ๋ค์์ ํ์ด๋จธ๊ฐ ์คํ๋ ์๊ฐ
- var timeInterval: TimeInterval: ํ์ด๋จธ์ ์คํ ์๊ฐ ๊ฐ๊ฒฉ(์ด ๋จ์)
Timer ์์ฑ ๋ฉ์๋
ํ์ด๋จธ ์์ฑ๊ณผ ๋์์ ๋ฐ ๋ฃจํ์ default mode๋ก ๋ฑ๋กํ๋ ํด๋์ค ๋ฉ์๋
class func scheduledTimer(withTimeInterval: TimeInterval, repeats: Bool, block: (Timer) -> Void) {}
class func scheduledTimer(timeInterval: TimeInterval, target: Any, selector: Selector, userInfo: Any?, repeats: Bool) {}
class func scheduledTimer(timeInterval: TimeInterval, invocation: NSInvocation, repeats: Bool) {}
ํ์ด๋จธ ์์ฑ ํ ์๋์ผ๋ก ํ์ด๋จธ ๊ฐ์ฒด๋ฅผ add(_:forMode:) ๋ฉ์๋๋ฅผ ์ด์ฉํด ๋ฐ ๋ฃจํ์ ์ถ๊ฐํด์ค์ผ ํ๋ ๋ฉ์๋
func init(timeInterval: TimeInterval, invocation: NSInvocation, repeats: Bool) {}
func init(timeInterval: TimeInterval, target: Any, selector: Selector, userInfo: Any?, repeats: Bool) {}
func init(fireAt: Date, interval: TimeInterval, target: Any, selector: Selector, userInfo: Any?, repeats: Bool) {}
'๐ฉ๐ปโ๐ป > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
UIKit๋? (0) | 2020.07.12 |
---|---|
Cocoa Touch ํ๋ ์์ํฌ๋? (0) | 2020.07.08 |
UIButton, UISlider, UILabel์ด๋? (0) | 2020.07.07 |
IBOutlet, IBAction์ด๋? (0) | 2020.06.26 |
์์ ์นดํ๋ก๊ทธ๋? (0) | 2020.06.26 |