AVPlayer로 미디어 재생하기
오디오와 비디오 리소스를 스트리밍하고 재생합니다.
AVPlayer로 미디어 재생하기은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
미디어를 위한 AVFoundation
AVFoundation은 시간 기반 시청각 미디어의 재생, 캡처, 편집, 내보내기를 위한 Apple의 프레임워크입니다.
재생의 핵심 클래스는 AVPlayer입니다.
import AVFoundationAVPlayer와 AVPlayerItem
AVPlayer는 재생을 제어하고, AVPlayerItem은 재생 중인 미디어를 나타내며 상태를 추적합니다. 이 항목은 AVAsset을 기반으로 합니다.
let url = URL(string: "https://example.com/video.mp4")!
let item = AVPlayerItem(url: url)
let player = AVPlayer(playerItem: item)재생 시작과 일시 정지
play(), pause(), seek(to:)로 재생을 제어합니다. 재생은 현재 시점부터 시작됩니다.
player.play()
// later
player.pause()비디오 표시
UIKit에서 비디오를 표시하려면 뷰에 AVPlayerLayer를 호스팅합니다. 이 레이어가 플레이어의 시각적 출력을 렌더링합니다.
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
playerLayer.videoGravity = .resizeAspect
view.layer.addSublayer(playerLayer)상태 관찰
AVPlayerItem은 status를 보고합니다. 이를 관찰하면 미디어가 readyToPlay 상태가 되었는지 또는 failed 상태가 되었는지 알 수 있습니다.
let observation = item.observe(\.status) { item, _ in
if item.status == .readyToPlay {
player.play()
}
}시간 추적
addPeriodicTimeObserver를 사용해 재생이 진행될 때 진행률 UI를 업데이트합니다. 시간은 CMTime 값으로 표현됩니다.
let interval = CMTime(seconds: 0.5, preferredTimescale: 600)
player.addPeriodicTimeObserver(forInterval: interval, queue: .main) { time in
let seconds = time.seconds
print("at \(seconds)s")
}CMTime 기초
CMTime은 샘플 단위의 정확도를 위해 시간을 유리수(값을 시간 척도로 나눈 값)로 저장합니다. 시간 척도 600은 일반적인 프레임 속도로 깔끔하게 나누어집니다.
let t = CMTime(seconds: 5, preferredTimescale: 600)
let half = CMTimeMultiplyByFloat64(t, multiplier: 0.5)정밀하게 탐색하기
seek(to:toleranceBefore:toleranceAfter:)에서 허용 오차를 0으로 설정하면 프레임 단위로 정확하게 탐색할 수 있지만 디코딩 작업이 더 많이 필요합니다.
let target = CMTime(seconds: 30, preferredTimescale: 600)
player.seek(to: target, toleranceBefore: .zero, toleranceAfter: .zero)재생 종료에 도달하기
AVPlayerItem.didPlayToEndTimeNotification을 관찰해 재생 완료를 감지한 다음 반복 재생하거나, 화면을 닫거나, 다음 항목을 표시합니다.
NotificationCenter.default.addObserver(
forName: .AVPlayerItemDidPlayToEndTime,
object: item, queue: .main) { _ in
player.seek(to: .zero)
player.play() // loop
}재생을 위한 오디오 세션
오디오가 올바르게 재생되고 구성에 따라 백그라운드에서도 계속 재생되도록 하려면 적절한 카테고리로 AVAudioSession을 설정합니다.
let session = AVAudioSession.sharedInstance()
try? session.setCategory(.playback)
try? session.setActive(true)재생 목록을 위한 AVQueuePlayer
AVQueuePlayer는 AVPlayer의 서브클래스로, 항목 큐를 순서대로 재생합니다. 재생 목록과 연속적인 비디오 피드에 적합합니다.
let queue = AVQueuePlayer(items: [item1, item2, item3])
queue.play()빠른 확인: AVPlayer
AVPlayer 재생에 대한 이해도를 확인해 보세요.
복습: AVPlayer로 미디어 재생하기
AVPlayer는 AVAsset을 기반으로 하는 AVPlayerItem의 재생을 처리하고, AVPlayerLayer는 비디오를 렌더링합니다. 항목의 status를 관찰하고, 주기적인 CMTime 관찰자로 진행 상황을 추적하며, 허용 오차를 0으로 설정해 정밀하게 탐색하고 재생 종료 알림을 처리합니다.
올바른 오디오 재생을 위해 AVAudioSession을 구성하고, 재생 목록에는 AVQueuePlayer를 사용합니다.
AI 튜터와 함께 Swift을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 122
- 레슨
- 409
자주 묻는 질문
“AVPlayer로 미디어 재생하기” 강의는 무료인가요?
네 — “AVPlayer로 미디어 재생하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“AVPlayer로 미디어 재생하기”에서 뭘 배우나요?
오디오와 비디오 리소스를 스트리밍하고 재생합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Swift Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“AVPlayer로 미디어 재생하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- AVPlayer로 미디어 재생하기
- 오디오 녹음
- AVAsset과 Composition
- SwiftUI에 플레이어 삽입하기