fix(ios): ensure audio and subtitle tracks are well reported

This commit is contained in:
olivier 2023-01-28 14:54:01 +01:00
parent dc8c618d41
commit 0e0ff18b27
2 changed files with 13 additions and 4 deletions

View File

@ -103,10 +103,14 @@ enum RCTVideoUtils {
title = value as! String title = value as! String
} }
let language:String! = currentOption?.extendedLanguageTag ?? "" let language:String! = currentOption?.extendedLanguageTag ?? ""
let selectedOption: AVMediaSelectionOption? = player.currentItem?.currentMediaSelection.selectedMediaOption(in: group!)
let audioTrack = [ let audioTrack = [
"index": NSNumber(value: i), "index": NSNumber(value: i),
"title": title, "title": title,
"language": language "language": language ?? "",
"selected": currentOption?.displayName == selectedOption?.displayName
] as [String : Any] ] as [String : Any]
audioTracks.add(audioTrack) audioTracks.add(audioTrack)
} }
@ -129,10 +133,13 @@ enum RCTVideoUtils {
title = value as! String title = value as! String
} }
let language:String! = currentOption?.extendedLanguageTag ?? "" let language:String! = currentOption?.extendedLanguageTag ?? ""
let selectedOpt = player.currentItem?.currentMediaSelection
let selectedOption: AVMediaSelectionOption? = player.currentItem?.currentMediaSelection.selectedMediaOption(in: group!)
let textTrack = TextTrack([ let textTrack = TextTrack([
"index": NSNumber(value: i), "index": NSNumber(value: i),
"title": title, "title": title,
"language": language "language": language,
"selected": currentOption?.displayName == selectedOption?.displayName
]) ])
textTracks.append(textTrack) textTracks.append(textTrack)
} }

View File

@ -1007,6 +1007,8 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
} }
if _videoLoadStarted { if _videoLoadStarted {
let audioTracks = RCTVideoUtils.getAudioTrackInfo(_player)
let textTracks = RCTVideoUtils.getTextTrackInfo(_player).map(\.json)
onVideoLoad?(["duration": NSNumber(value: duration), onVideoLoad?(["duration": NSNumber(value: duration),
"currentTime": NSNumber(value: Float(CMTimeGetSeconds(_playerItem.currentTime()))), "currentTime": NSNumber(value: Float(CMTimeGetSeconds(_playerItem.currentTime()))),
"canPlayReverse": NSNumber(value: _playerItem.canPlayReverse), "canPlayReverse": NSNumber(value: _playerItem.canPlayReverse),
@ -1020,8 +1022,8 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
"height": width != nil ? NSNumber(value: height!) : "undefinded", "height": width != nil ? NSNumber(value: height!) : "undefinded",
"orientation": orientation "orientation": orientation
], ],
"audioTracks": RCTVideoUtils.getAudioTrackInfo(_player), "audioTracks": audioTracks,
"textTracks": _textTracks ?? RCTVideoUtils.getTextTrackInfo(_player), "textTracks": textTracks,
"target": reactTag as Any]) "target": reactTag as Any])
} }
_videoLoadStarted = false _videoLoadStarted = false