2013-08-07 10 views
7

Sono stato in grado di visualizzare una traccia di sottotitoli con AVPlayer su iOS 6, ma non sono in grado di personalizzarlo. Mostra solo lo stesso stile (una piccola dimensione del carattere, in bianco).Personalizzazione dei sottotitoli con AVPlayer

Ecco come seleziono il sottotitolo:

AVMediaSelectionGroup *subtitle = [asset mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicLegible]; 
[self.videoPlayer.currentItem selectMediaOption:subtitle.options[0] inMediaSelectionGroup: subtitle]; 

E come sto cercando di personalizzare il sottotitolo:

AVTextStyleRule *rule = [[AVTextStyleRule alloc] initWithTextMarkupAttributes:@{ 
         (id)kCMTextMarkupAttribute_ForegroundColorARGB : @[ @1, @1, @0, @0 ], 
         (id) kCMTextMarkupAttribute_ItalicStyle : @(YES)}]; 

self.videoPlayer.currentItem.textStyleRules = @[rule]; 

Non importa se ho messo questo frammento prima o dopo aver selezionato il sottotitolo, Il risultato è lo stesso.

AVPlayer viene creato con un URL (file) locale (un file mp4).

Qualche idea su come fare questo?

+1

questo non è per esperienza, ma si potrebbe provare a creare due regole distinte, impostando un attributo per ogni regola e quindi l'aggiunta di entrambe le regole nella serie di regole da stabilire? –

+0

Grazie per il suggerimento, ma non ha funzionato. –

risposta

8

Ho fatto questa domanda su Apple Developer Forum e ho avuto an answer da un dipendente di Apple:

La proprietà textStyleRules si applica solo ai contenuti WebVTT. Il tuo file locale probabilmente trasporta i sottotitoli nel formato TX3G.

Hai ragione che la documentazione non menziona questa limitazione, quindi dovresti creare un bug per poter aggiornare la nostra documentazione.

Così, aprirò un radar a chiedere che aggiornano i documenti e vi posterò il suo numero qui se qualcuno vuole ingannare esso.

EDIT:

ho creato rdar://14923673 chiedere ad Apple di aggiornare la documentazione su questa limitazione di corrente. Ho anche creato rdar://14923755 per chiedere loro di fornire supporto ai sottotitoli in formato TX3G.

Si prega di ingannarli se si è interessati da questo problema.

+1

Voglio duplicare! Facciamo qualche pressione su di loro. :) – allprog

+0

Non sono ancora riuscito a farlo. Proverò a farlo più tardi oggi. Intendo aprire 2 radar: uno sui documenti e un altro su come fornire questa funzionalità. –

+0

Sembra contraddire il fatto che lo supportano per le risorse Web e non per quelle locali, dato che sono comunque in grado di visualizzarle. Penserei che potrebbero usare lo stesso codice per aggiungere il testo. – allprog

0

Ho trovato una soluzione alternativa per modificare correttamente il colore e lo sfondo del testo in primo piano. Separa semplicemente gli stili in più AVTextStyleRule.

func initSubtitleStyle() { 
    let textStyle:AVTextStyleRule = AVTextStyleRule(textMarkupAttributes: [ 
     kCMTextMarkupAttribute_CharacterBackgroundColorARGB as String: [0.2,0.3,0.0,0.3] 
     ])! 


    let textStyle1:AVTextStyleRule = AVTextStyleRule(textMarkupAttributes: [ 
     kCMTextMarkupAttribute_ForegroundColorARGB as String: [0.2,0.8,0.4,0.0] 
     ])! 

    let textStyle2:AVTextStyleRule = AVTextStyleRule(textMarkupAttributes: [ 
     kCMTextMarkupAttribute_BaseFontSizePercentageRelativeToVideoHeight as String: 20, 
     kCMTextMarkupAttribute_CharacterEdgeStyle as String: kCMTextMarkupCharacterEdgeStyle_None 
     ])! 

    player.currentItem?.textStyleRules = [textStyle, textStyle1, textStyle2] 
} 

favore, non chiedetemi perché, che la soluzione provenire da prova ed errore XD