2015-11-12 16 views
7

W tvOS, w menu wyświetlanym po przesunięciu użytkownika na pilocie, który pokazuje "napisy, dźwięk & info" w innych aplikacjach do filmów, jak utworzyć kolejny zakładka z przyciskami?tvos AVPlayerViewController, jak wyświetlić zakładkę napisów w menu podręcznym

Poniżej jest mój kod:

AVMutableMetadataItem *titleMetadataItem = [[AVMutableMetadataItem alloc] init]; 
titleMetadataItem.locale = NSLocale.currentLocale; 
titleMetadataItem.key = AVMetadataCommonKeyTitle; 
titleMetadataItem.keySpace = AVMetadataKeySpaceCommon; 
titleMetadataItem.value = @"The Title"; 

NSArray *externalMetadata = [[NSArray alloc] initWithObjects:titleMetadataItem, nil]; 

_player.player.currentItem.externalMetadata = externalMetadata; 

Czy ktoś mógłby mi powiedzieć jak mogę tworzyć przyciski w przesuń w dół menu na AVPlayerViewController tak, że użytkownik może przełączać się między wyłączania lub włączania napisów? Nie mam osadzonego w filmie kamery srt files. Zamiast tego mam oddzielny subtitle parser i wyświetlam go na etykiecie. Udało mi się uzyskać sekcję z informacjami z tekstem, ale czy jest jakiś sposób dodania przycisków?

LUB Jak mogę dodać opcję napisów do wideo? To nie działa: _player.requiresFullSubtitles = YES;

Dzięki!

+0

Jenel. Czy masz jakieś rozwiązanie tego problemu? Czy możesz mi powiedzieć, jak rozwiązać ten problem? Właściwie chcę dodać niestandardowy przycisk do umieszczenia podtytułu. –

+0

To trochę hack, ale musisz utworzyć niestandardowy widok, który zawiera przycisk i po prostu przełączać, gdy chcesz, aby ten przycisk był wyświetlany. –

Odpowiedz

0

Kontroler AVPlayerViewController ładuje napisy tylko wtedy, gdy są one osadzone w strumieniach HLS i jest to również jedyny legalny sposób wyświetlania karty "Napisy" w menu podręcznym.

Zbudowałem narzędzie do dynamicznego dodawania napisów VTT do strumieni HLS (m3u8) o nazwie ACHLSCaptioningServer (https://github.com/acotilla91/ACHLSCaptioningServer).

Uwaga: Jeśli masz dostęp tylko do plików SRT, musisz znaleźć sposób przekonwertowania kodów SRT na formaty VTT.

Jak używać:

NSURL *origStreamURL = your_original_stream-url; 
NSURL *vttFileURL = your_vtt_file_url; 

NSURL *streamURL = [[ACHLSCaptioningServer sharedInstance] getCaptionedHLSStreamFromStream:origStreamURL vttURL:vttFileURL]; 

// 
// play stream 
// 

AVURLAsset *videoAsset = [[AVURLAsset alloc] initWithURL:streamURL options:nil]; 

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:videoAsset]; 

AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; 

AVPlayerViewController *avPlayerController = [[AVPlayerViewController alloc] initWithNibName:nil bundle:nil]; 
[avPlayerController setPlayer:player]; 
[avPlayerController.view setFrame:self.view.frame]; 
[self addChildViewController:avPlayerController]; 
[self.view addSubview:avPlayerController.view]; 
[avPlayerController didMoveToParentViewController:self]; 
+0

dzięki! Czy wiesz, w jaki sposób mogę przekonwertować pliki SRT na VTT? –

+1

To może dać ci pomysł https://github.com/nwoltman/srt-to-vtt-converter – BobC