본문 바로가기

전체 글

(18)
[iOS] AVPlayer, AVPlayerItem, AVPlayer.currentItem (Video) AVPlayerItem VS AVPlayerAVPlayerItemAVPlayer미디어 데이터(video, audio 파일 등)의 정보를 관리(로딩 상태, 버퍼링 상태, 시간 범위 등)AVPlayerItem을 재생하는 역할(Play, Pause, Stop, Seek등)영상, 오디오 등을 불러옴. (CD)영상, 오디오 등을 재생함. (CD 플레이어) let url = URL(string: "https://example.com/video.mp4")!let playerItem = AVPlayerItem(url: url) // 🎥 영상 데이터를 담는 AVPlayerItemlet player = AVPlayer(playerItem: playerItem) // 🔊 재생을 담당하는 AVPlayerplayer...
[iOS] AVPlayer + NotificationCenter (ep 02) + Delegate패턴 도입은 적합한가? Delegate 패턴 도입의 적합성 네트워크 상태에 따라 오디오 재생 이벤트를 처리하려고 한다. 처음엔 KVO와 NotificationCenter를 조합하여 코드를 구성했더니 NotificationCenter에 너무 많은 관찰자들의 등록을 요구했고, KVO로 인해 코드가 길어지며 가독성도 굉장히 떨어졌다. 정말 마음에 안들어서 다시 나만의 코드로 재구성하기 위해 어떤 패턴을 사용할지 어떤 프레임워크를 사용할지 생각해봤다. NotificationCenter를 쓸까? 아니면 1:1 통신에 적합한 Delegate패턴을 사용하여 네트워크 실시간 모니터링을 구현할까? 최초엔 Delegate패턴이 더 깔끔하고 관리하기도 편한데다 어차피 AudioManager와 1:1통신이니 이보다 좋을 수 없다고 생각했다.하지만 ..
[iOS] AVPlayer + NotificationCenter (ep 01) AVPlayer + NotificationCenter ● AudioSession 구성과 오디오 로드private func setupAudioSession() { do { try session.setCategory(.playback, mode: .default) try session.setActive(true) } catch { print("AudioManager, setupAudioSession // AVAudioSession 설정 실패: \(error.localizedDescription)") }} func loadAudio(from url: URL, completion: @escaping (Bool) -> Void) ..