diff --git a/ios/Video/Features/RCTPlayerOperations.swift b/ios/Video/Features/RCTPlayerOperations.swift index 9c80c85f3e..d1ca88a9e4 100644 --- a/ios/Video/Features/RCTPlayerOperations.swift +++ b/ios/Video/Features/RCTPlayerOperations.swift @@ -15,11 +15,15 @@ enum RCTPlayerOperations { let trackCount: Int! = player?.currentItem?.tracks.count ?? 0 // The first few tracks will be audio & video track - var firstTextIndex = 0 + var firstTextIndex = -1 for i in 0 ..< trackCount where player?.currentItem?.tracks[i].assetTrack?.hasMediaCharacteristic(.legible) ?? false { firstTextIndex = i break } + if firstTextIndex == -1 { + // no sideLoaded text track available (can happen with invalid vtt url) + return + } var selectedTrackIndex: Int = RCTVideoUnset diff --git a/ios/Video/RCTVideo.swift b/ios/Video/RCTVideo.swift index 2e405c76a8..3aaf532c8a 100644 --- a/ios/Video/RCTVideo.swift +++ b/ios/Video/RCTVideo.swift @@ -613,6 +613,10 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH textTracks: self._textTracks ) + if validTextTracks.isEmpty { + DebugLog("Strange state, not valid textTrack") + } + if validTextTracks.count != self._textTracks.count { self.setTextTracks(validTextTracks) }