2015-11-12 17 views
7

In tvOS, nel menu che viene visualizzato quando un utente scorre verso il basso sul telecomando, che mostra "sottotitoli, audio & informazioni" su altre app di film, come crearne un'altra scheda con pulsanti?tvos AVPlayerViewController come visualizzare la scheda sottotitoli sul menu a scorrimento

Qui di seguito è il mio codice:

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; 

qualcuno può dirmi come posso creare un pulsanti nel colpo discesa di un AVPlayerViewController modo che un utente può passare da spegnere o accendere i sottotitoli? Non ho il srt files incorporato nel video. Invece ho uno subtitle parser separato e lo visualizzo su un'etichetta. Sono stato in grado di ottenere la sezione informazioni da mostrare con il testo, ma c'è un modo per aggiungere pulsanti?

O come posso aggiungere un'opzione sottotitoli al video? Questo non funziona: _player.requiresFullSubtitles = YES;

Grazie!

+0

Jenel. Hai avuto qualche soluzione a questo problema? Puoi dirmi come risolvere quello? In realtà, voglio aggiungere un pulsante personalizzato per posizionare il sottotitolo. –

+0

È un po 'un trucco, ma devi creare una visualizzazione personalizzata che contenga il pulsante e semplicemente attivare quando vuoi che il pulsante mostri. –

risposta

0

L'AVPlayerViewController carica solo i sottotitoli se sono incorporati nei flussi HLS e questo è anche l'unico modo legale per mostrare la scheda "Sottotitoli" nel menu a scorrimento.

Ho creato un'utilità per aggiungere dinamicamente i sottotitoli VTT agli stream HLS (m3u8) chiamati ACHLSCaptioningServer (https://github.com/acotilla91/ACHLSCaptioningServer).

Nota: se si ha accesso solo ai file SRT, è necessario trovare un modo per convertire i codici SRT in VTT.

Come usare:

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

grazie! sai in che modo posso convertire i file SRT in VTT? –

+1

Questo potrebbe darti un'idea https://github.com/nwoltman/srt-to-vtt-converter – BobC