diff --git a/ios/Video/Features/RCTVideoUtils.swift b/ios/Video/Features/RCTVideoUtils.swift index 3a1011e67b..9fd6bec82d 100644 --- a/ios/Video/Features/RCTVideoUtils.swift +++ b/ios/Video/Features/RCTVideoUtils.swift @@ -299,23 +299,32 @@ enum RCTVideoUtils { if let textTracks { for i in 0 ..< tracks.count { guard let track = tracks[i]?.first else { continue } // fix when there's no textTrackAsset - validTextTracks.append(textTracks[i]) let textCompTrack: AVMutableCompositionTrack! = mixComposition.addMutableTrack(withMediaType: AVMediaType.text, preferredTrackID: kCMPersistentTrackID_Invalid) - try? textCompTrack.insertTimeRange( - CMTimeRangeMake(start: .zero, duration: videoAsset.timeRange.duration), - of: track, - at: .zero - ) + + do { + try textCompTrack.insertTimeRange( + CMTimeRangeMake(start: .zero, duration: videoAsset.timeRange.duration), + of: track, + at: .zero + ) + validTextTracks.append(textTracks[i]) + } catch { + // TODO: upgrade error by call some props callback to better inform user + print("Error occurred on textTrack insert attempt: \(error.localizedDescription)") + continue + } } } return }.then { - let emptyVttFile: TextTrack? = self.createEmptyVttFile() - if emptyVttFile != nil { - validTextTracks.append(emptyVttFile!) + if !validTextTracks.isEmpty { + let emptyVttFile: TextTrack? = self.createEmptyVttFile() + if emptyVttFile != nil { + validTextTracks.append(emptyVttFile!) + } } fulfill(validTextTracks)