Swift Academy · 강의

SwiftUI에 플레이어 삽입하기

VideoPlayer와 사용자 지정 플레이어 뷰를 사용합니다.

레슨 4/413개 단계

SwiftUI에 플레이어 삽입하기은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

SwiftUI에서 비디오 사용하기

SwiftUI는 AVKit에서 제공하는 VideoPlayer 뷰를 통해 미디어 재생을 선언적으로 삽입할 수 있으며, 기본 컨트롤도 제공합니다.

import SwiftUI
import AVKit

VideoPlayer 뷰

VideoPlayer는 AVPlayer를 받아 표준 재생 컨트롤인 재생, 일시 정지, 탐색 막대, 전체 화면을 표시합니다.

struct PlayerScreen: View {
    let player = AVPlayer(url: URL(string: "https://example.com/v.mp4")!)
    var body: some View {
        VideoPlayer(player: player)
            .frame(height: 240)
    }
}

상태로 플레이어 유지하기

AVPlayer를 @State에 저장하면 뷰 업데이트가 발생해도 유지됩니다. 매번 body가 호출될 때 이를 다시 만들면 재생이 다시 시작됩니다.

struct PlayerScreen: View {
    @State private var player = AVPlayer(
        url: URL(string: "https://example.com/v.mp4")!)
    var body: some View {
        VideoPlayer(player: player)
    }
}

재생 제어

SwiftUI의 생명 주기 수식어로 재생을 제어합니다. 화면에 나타날 때 시작하고 사라질 때 일시 정지하면 화면 밖에서 오디오가 계속 재생되는 것을 방지할 수 있습니다.

VideoPlayer(player: player)
    .onAppear { player.play() }
    .onDisappear { player.pause() }

오버레이 콘텐츠

VideoPlayer 초기화 구문은 비디오 위에 제목, 배지, 자막과 같은 사용자 지정 UI를 레이어로 표시할 수 있는 오버레이 클로저를 받습니다.

VideoPlayer(player: player) {
    VStack {
        Spacer()
        Text("Live")
            .padding(6)
            .background(.red, in: Capsule())
    }
}

반복 재생

항목 종료 알림을 관찰하고 재생 위치를 0으로 되돌리면 반복 재생할 수 있습니다. 큐 플레이어와 함께 AVPlayerLooper를 사용하는 방법도 있습니다.

.onAppear {
    NotificationCenter.default.addObserver(
        forName: .AVPlayerItemDidPlayToEndTime,
        object: player.currentItem, queue: .main) { _ in
        player.seek(to: .zero); player.play()
    }
}

비디오를 위한 오디오 세션

AVAudioSession을 구성하면 비디오 오디오가 올바르게 동작하도록 할 수 있습니다. 음소거 스위치를 따르게 하거나 원하는 경우 음소거 상태에서도 재생하도록 설정할 수 있습니다.

try? AVAudioSession.sharedInstance().setCategory(.playback)

UIViewRepresentable을 사용한 사용자 지정 플레이어

시스템 컨트롤 없이 완전히 사용자 지정한 UI가 필요하다면 VideoPlayer 대신 AVPlayerLayer를 UIViewRepresentable로 감쌉니다.

struct PlayerLayerView: UIViewRepresentable {
    let player: AVPlayer
    func makeUIView(context: Context) -> UIView { PlayerUIView(player: player) }
    func updateUIView(_ uiView: UIView, context: Context) { }
}

기반 UIView

사용자 지정 UIView가 AVPlayerLayer를 호스팅하고 자신의 경계에 맞게 크기를 조절하므로 컨트롤이 없는 비디오 표면을 만들 수 있습니다.

final class PlayerUIView: UIView {
    init(player: AVPlayer) {
        super.init(frame: .zero)
        let layer = AVPlayerLayer(player: player)
        layer.videoGravity = .resizeAspectFill
        self.layer.addSublayer(layer)
    }
    required init?(coder: NSCoder) { fatalError() }
}

화면 속 화면

화면 속 화면 기능에는 플레이어 레이어와 함께 AVPictureInPictureController를 사용하고 백그라운드 오디오 기능을 활성화합니다.

let pip = AVPictureInPictureController(playerLayer: playerLayer)
pip?.startPictureInPicture()

정리하기

뷰가 사라질 때 플레이어를 일시 정지하고 관찰자를 제거하여 리소스를 해제하고, 의도하지 않은 백그라운드 오디오가 재생되지 않도록 하세요.

.onDisappear {
    player.pause()
    // remove notification observers here
}

빠른 확인: SwiftUI 재생기

SwiftUI에 재생기를 삽입하는 방법을 얼마나 이해했는지 확인해 보세요.

복습: SwiftUI에 재생기 삽입하기

AVKit의 VideoPlayer는 표준 제어 기능이 포함된 AVPlayer를 삽입합니다. 안정적인 인스턴스를 유지하려면 재생기를 @State에 보관하고 onAppear/onDisappear에서 재생과 일시 정지를 제어하세요. 후행 클로저를 통해 오버레이를 추가하고 종료 알림이 오면 반복 재생하세요.

사용자 지정 제어 기능 없이 재생하려면 AVPlayerLayer를 UIViewRepresentable로 감싸고, 뷰가 사라질 때 관찰자를 정리하세요.

무료로 시작

AI 튜터와 함께 Swift을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
122
레슨
409

자주 묻는 질문

“SwiftUI에 플레이어 삽입하기” 강의는 무료인가요?

네 — “SwiftUI에 플레이어 삽입하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“SwiftUI에 플레이어 삽입하기”에서 뭘 배우나요?

VideoPlayer와 사용자 지정 플레이어 뷰를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“SwiftUI에 플레이어 삽입하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. AVPlayer로 미디어 재생하기
  2. 오디오 녹음
  3. AVAsset과 Composition
  4. SwiftUI에 플레이어 삽입하기
← Swift Academy(으)로 돌아가기