diff --git a/README.md b/README.md index af4df361..0da8c54d 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ yarn add react-native-video
iOS -Run `react-native link` to link the react-native-video library. +Run `react-native link react-native-video` to link the react-native-video library. If you would like to allow other apps to play music over your video component, add: @@ -79,9 +79,7 @@ end
tvOS -Run `react-native link` to link the react-native-video library. - -`react-native link` doesn’t work properly with the tvOS target so we need to add the library manually. +`react-native link react-native-video` doesn’t work properly with the tvOS target so we need to add the library manually. First select your project in Xcode. @@ -103,7 +101,7 @@ Select RCTVideo-tvOS
Android -Run `react-native link` to link the react-native-video library. +Run `react-native link react-native-video` to link the react-native-video library. Or if you have trouble, make the following additions to the given files manually: diff --git a/ios/Video/RCTVideo.m b/ios/Video/RCTVideo.m index 61853efe..8bee5246 100644 --- a/ios/Video/RCTVideo.m +++ b/ios/Video/RCTVideo.m @@ -13,6 +13,8 @@ static NSString *const readyForDisplayKeyPath = @"readyForDisplay"; static NSString *const playbackRate = @"rate"; static NSString *const timedMetadata = @"timedMetadata"; +static int const RCTVideoUnset = -1; + @implementation RCTVideo { AVPlayer *_player; @@ -838,7 +840,7 @@ static NSString *const timedMetadata = @"timedMetadata"; - (void) setSideloadedText { NSString *type = _selectedTextTrack[@"type"]; - NSArray* textTracks = [self getTextTrackInfo]; + NSArray *textTracks = [self getTextTrackInfo]; // The first few tracks will be audio & video track int firstTextIndex = 0; @@ -848,7 +850,7 @@ static NSString *const timedMetadata = @"timedMetadata"; } } - int selectedTrackIndex = -1; + int selectedTrackIndex = RCTVideoUnset; if ([type isEqualToString:@"disabled"]) { // Do nothing. We want to ensure option is nil @@ -877,29 +879,27 @@ static NSString *const timedMetadata = @"timedMetadata"; selectedTrackIndex = index; } } - } - - // user's selected language might not be available, or system defaults have captions enabled - if (selectedTrackIndex == -1 || [type isEqualToString:@"default"]) { - CFArrayRef captioningMediaCharacteristics = MACaptionAppearanceCopyPreferredCaptioningMediaCharacteristics(kMACaptionAppearanceDomainUser); - NSArray *captionSettings = (__bridge NSArray*)captioningMediaCharacteristics; - if ([captionSettings containsObject: AVMediaCharacteristicTranscribesSpokenDialogForAccessibility]) { - // iterate through the textTracks to find a matching option, or default to the first object. - selectedTrackIndex = 0; - - NSString * systemLanguage = [[NSLocale preferredLanguages] firstObject]; - for (int i = 0; i < textTracks.count; ++i) { - NSDictionary *currentTextTrack = [textTracks objectAtIndex:i]; - if ([systemLanguage isEqualToString:currentTextTrack[@"language"]]) { - selectedTrackIndex = i; - break; - } + } else { // type "system" + CFArrayRef captioningMediaCharacteristics = MACaptionAppearanceCopyPreferredCaptioningMediaCharacteristics(kMACaptionAppearanceDomainUser); + NSArray *captionSettings = (__bridge NSArray*)captioningMediaCharacteristics; + if ([captionSettings containsObject:AVMediaCharacteristicTranscribesSpokenDialogForAccessibility]) { + selectedTrackIndex = 0; // If we can't find a match, use the first available track + NSString *systemLanguage = [[NSLocale preferredLanguages] firstObject]; + for (int i = 0; i < textTracks.count; ++i) { + NSDictionary *currentTextTrack = [textTracks objectAtIndex:i]; + if ([systemLanguage isEqualToString:currentTextTrack[@"language"]]) { + selectedTrackIndex = i; + break; } } + } } - + for (int i = firstTextIndex; i < _player.currentItem.tracks.count; ++i) { - BOOL isEnabled = i == selectedTrackIndex + firstTextIndex; + BOOL isEnabled = NO; + if (selectedTrackIndex != RCTVideoUnset) { + isEnabled = i == selectedTrackIndex + firstTextIndex; + } [_player.currentItem.tracks[i] setEnabled:isEnabled]; } }