From 0e0ff18b279f7f0646129adab182435794d8cd4b Mon Sep 17 00:00:00 2001 From: olivier Date: Sat, 28 Jan 2023 14:54:01 +0100 Subject: [PATCH] fix(ios): ensure audio and subtitle tracks are well reported --- ios/Video/Features/RCTVideoUtils.swift | 11 +++++++++-- ios/Video/RCTVideo.swift | 6 ++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ios/Video/Features/RCTVideoUtils.swift b/ios/Video/Features/RCTVideoUtils.swift index 50df8e3f..3953c9d0 100644 --- a/ios/Video/Features/RCTVideoUtils.swift +++ b/ios/Video/Features/RCTVideoUtils.swift @@ -103,10 +103,14 @@ enum RCTVideoUtils { title = value as! String } let language:String! = currentOption?.extendedLanguageTag ?? "" + + let selectedOption: AVMediaSelectionOption? = player.currentItem?.currentMediaSelection.selectedMediaOption(in: group!) + let audioTrack = [ "index": NSNumber(value: i), "title": title, - "language": language + "language": language ?? "", + "selected": currentOption?.displayName == selectedOption?.displayName ] as [String : Any] audioTracks.add(audioTrack) } @@ -129,10 +133,13 @@ enum RCTVideoUtils { title = value as! String } let language:String! = currentOption?.extendedLanguageTag ?? "" + let selectedOpt = player.currentItem?.currentMediaSelection + let selectedOption: AVMediaSelectionOption? = player.currentItem?.currentMediaSelection.selectedMediaOption(in: group!) let textTrack = TextTrack([ "index": NSNumber(value: i), "title": title, - "language": language + "language": language, + "selected": currentOption?.displayName == selectedOption?.displayName ]) textTracks.append(textTrack) } diff --git a/ios/Video/RCTVideo.swift b/ios/Video/RCTVideo.swift index baca4d1a..ce9c99ac 100644 --- a/ios/Video/RCTVideo.swift +++ b/ios/Video/RCTVideo.swift @@ -1007,6 +1007,8 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH } if _videoLoadStarted { + let audioTracks = RCTVideoUtils.getAudioTrackInfo(_player) + let textTracks = RCTVideoUtils.getTextTrackInfo(_player).map(\.json) onVideoLoad?(["duration": NSNumber(value: duration), "currentTime": NSNumber(value: Float(CMTimeGetSeconds(_playerItem.currentTime()))), "canPlayReverse": NSNumber(value: _playerItem.canPlayReverse), @@ -1020,8 +1022,8 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH "height": width != nil ? NSNumber(value: height!) : "undefinded", "orientation": orientation ], - "audioTracks": RCTVideoUtils.getAudioTrackInfo(_player), - "textTracks": _textTracks ?? RCTVideoUtils.getTextTrackInfo(_player), + "audioTracks": audioTracks, + "textTracks": textTracks, "target": reactTag as Any]) } _videoLoadStarted = false