                 self?.hideSubtitleForSmallScreen()
             },
             player.observe(\.currentItem) { [weak self] player, _ in
-                self?.updateAssetIfNeeded(player.currentItem)
-                self?.itemInfo?.update(item: player.currentItem)
+                guard let self = self else { return }
+                
+                if self.asset == nil,
+                   let item = player.currentItem,
+                   let url: URL = (item.asset as? AVURLAsset)?.url,
+                   let asset = AVURLAssetWithCookiesBuilder(url: url).asset {
+                    self.initializePlaybackResources(with: asset, and: item)
+                    self.trigger(.ready)
+                } else {
+                    self.itemInfo?.update(item: player.currentItem)
+                }
             },
             player.observe(\.currentItem?.status) { [weak self] player, _ in self?.handleStatusChangedEvent(player) },
             player.observe(\.currentItem?.loadedTimeRanges) { [weak self] player, _ in self?.triggerDidUpdateBuffer(with: player) },

    
    public required init(options: Options) {
        super.init(options: options)
        
        asset = createAsset(from: options[kSourceUrl] as? String)
        
        player = createAVPlayer(with: asset, shouldLoop: options[kLoop] as? Bool ?? false)
        player.allowsExternalPlayback = isExternalPlaybackEnabled

        selectDefaultSubtitleIfNeeded()
    }
    
    private func initializePlaybackResources(with asset: AVURLAsset, and item: AVPlayerItem) {
        self.asset = asset
        self.itemInfo = AVPlayerItemInfo(item: item, delegate: self)
    }
    
    private func observe(player: AVPlayer) {
