Controlla lo stile dei sottotitoli

Ultimo aggiornamento: 2023-09-21

È possibile fornire informazioni sullo stile per le tracce di sottotitoli codificati utilizzando la classe TextFormat, che imposta lo stile per i sottotitoli codificati visualizzati dal lettore.

Questa classe racchiude informazioni sullo stile dei sottotitoli codificati, ad esempio il tipo di carattere, la dimensione, il colore e l'opacità dello sfondo.

Imposta stili sottotitoli codificati

È possibile applicare uno stile al testo con sottotitoli codificati con i metodi TVSDK.

  1. Attendi che il lettore multimediale si trovi almeno nel PREPARED stato.

  2. Creare un TextFormatBuilder dell'istanza.

    Potete specificare tutti i parametri di stile dei sottotitoli o impostarli in un secondo momento.

    TVSDK incapsula le informazioni sullo stile dei sottotitoli nella TextFormat di rete. Il TextFormatBuilder La classe crea oggetti che implementano questa interfaccia.

    public TextFormatBuilder(
       TextFormat.Font font,
       TextFormat.Size size,
       TextFormat.FontEdge fontEdge,
       java.lang.String fontColor,
       java.lang.String backgroundColor,
       java.lang.String fillColor,
       java.lang.String edgeColor,
       int fontOpacity,
       int backgroundOpacity,
       int fillOpacity
       java.lang.String bottomInset,
       java.lang.String safeArea)
    
  3. Per ottenere un riferimento a un oggetto che implementa TextFormat , chiama il TextFormatBuilder.toTextFormat metodo pubblico.

    Questo restituisce un TextFormat oggetto che può essere applicato al lettore multimediale.

    public TextFormat toTextFormat()

  4. È possibile ottenere le impostazioni di stile sottotitoli correnti eseguendo una delle operazioni seguenti:

    • Ottieni tutte le impostazioni di stile con MediaPlayer.getCCStyle Il valore restituito è un'istanza del TextFormat di rete.

      /**
      * @return the current closed captioning style.
      * If no style was previously set, it returns a TextFormat object
      * with default values for each attribute.
      * @throws MediaPlayerException if media player was already released.
      */
      public TextFormat getCCStyle() throws MediaPlayerException;
      
    • Ottenere le impostazioni una alla volta tramite TextFormat metodi getter dell'interfaccia.

      public java.lang.String getFontColor();
      public java.lang.String getBackgroundColor();
      public java.lang.String getFillColor(); // retrieve the font fill color
      public java.lang.String getEdgeColor(); // retrieve the font edge color
      public TextFormat.Size getSize(); // retrieve the font size
      public TextFormat.FontEdge getFontEdge(); // retrieve the font edge type
      public TextFormat.Font getFont(); // retrieve the font type
      public int getFontOpacity();
      public int getBackgroundOpacity();
      public java.lang.String getBottomInset(java.lang.String bi);
      public java.lang.String getSafeArea(java.lang.String sa);
      
  5. Per modificare le impostazioni di stile, effettuare una delle seguenti operazioni:

    • Utilizzare il metodo setter MediaPlayer.setCCStyle, passaggio di un'istanza di TextFormat Interfaccia:

      /**
      * Sets the closed captioning style. Used to control the closed captioning font,
      * size, color, edge and opacity.
      *
      * This method is safe to use even if the current media stream doesn't have closed
      * captions.
      *
      * @param textFormat
      * @throws MediaPlayerException
      */
      public void setCCStyle(TextFormat textFormat) throws MediaPlayerException;
      
    • Utilizza il TextFormatBuilder classe, che definisce i singoli metodi di impostazione.

      Il TextFormat L'interfaccia definisce un oggetto immutabile in modo che esistano solo metodi getter e nessun setter. È possibile impostare i parametri di stile dei sottotitoli solo con TextFormatBuilder classe:

      // set font type
      public void setFont(Font font)
      public void setBackgroundColor(String backgroundColor)
      public void setFillColor(String fillColor)
      // set the font-edge color
      public void setEdgeColor(String edgeColor)
      // set the font size
      public void setSize(Size size)
      // set the font edge type
      public void setFontEdge(FontEdge fontEdge)
      public void setFontOpacity(int fontOpacity)
      public void setBackgroundOpacity(int backgroundOpacity)
      // set the font-fill opacity level
      public void setFillOpacity(int fillOpacity)
      public void setFontColor(String fontColor)
      public void setBottomInset(String bi)
      public void setSafeArea(String sa)
      public void setTreatSpaceAsAlphaNum(bool)
      
      IMPORTANTE

      Impostazioni colore: In Android TVSDK 2.X, è stato apportato un miglioramento allo stile dei colori dei sottotitoli. Questo miglioramento consente di impostare i colori dei sottotitoli codificati utilizzando una stringa esadecimale che rappresenta i valori dei colori RGB. La rappresentazione colore esadecimale RGB è la nota stringa da 6 byte utilizzata in applicazioni come Photoshop:

      • FFFFFF = Nero
      • 000000 = bianco
      • FF0000 = rosso
      • 00FF00 = Verde
      • 0000FF = Blu
        e così via.

      Nell'applicazione, ogni volta che trasmettete le informazioni sullo stile del colore a TextFormatBuilder, si utilizza ancora il Color come prima, ma ora è necessario aggiungere getValue() al colore per ottenere il valore come stringa. Ad esempio:

      tfb = tfb.setBackgroundColor(TextFormat.Color.RED <b>.getValue()</b>);

Poiché l'impostazione dello stile sottotitoli è un'operazione asincrona, la visualizzazione delle modifiche sullo schermo potrebbe richiedere alcuni secondi.

Opzioni di stile sottotitoli codificati

È possibile specificare diverse opzioni di stile per i sottotitoli, che sostituiscono le opzioni di stile dei sottotitoli originali.

public TextFormatBuilder(
   Font font,
   Size size,
   FontEdge fontEdge,
   String fontColor,
   String backgroundColor,
   String fillColor,
   String edgeColor,
   int fontOpacity,
   int backgroundOpacity,
   int fillOpacity,
   String bottomInset
   String safeArea)
SUGGERIMENTO

Nelle opzioni che definiscono i valori predefiniti (ad esempio, DEFAULT), tale valore si riferisce all'impostazione utilizzata quando la didascalia è stata originariamente specificata.

Formato Descrizione
Font

Tipo di carattere.

Può essere impostato solo su un valore definito da TextFormat.Font e rappresenta, ad esempio, a spaziatura fissa con o senza servifs.

Suggerimento: i tipi di carattere effettivi disponibili su un dispositivo possono variare e, se necessario, vengono utilizzate sostituzioni. Il monospazio con serifs è tipicamente usato come sostituto, anche se questa sostituzione può essere specifica per il sistema.

Dimensione

Dimensione della didascalia.

Può essere impostato solo su un valore definito da FormatoTesto.Dimensione enumerazione:

  • MEDIA - Formato standard
  • GRANDE - Circa il 30% più grande del medio
  • PICCOLO - Circa il 30% più piccolo del medio
  • PREDEFINITO : dimensione predefinita per la didascalia, uguale a media

Bordo font

Effetto utilizzato per il bordo del font, ad esempio in rilievo o nessuno.

Può essere impostato solo su un valore definito da TextFormat.FontEdge enumerazione.

Colore font

Colore del carattere.

Può essere impostato solo su un valore definito da FormatoTesto.Colore enumerazione.

Colore bordo

Colore dell'effetto bordo.

Può essere impostato su uno qualsiasi dei valori disponibili per il colore del carattere.

Colore di sfondo

Colore della cella del carattere di sfondo.

Può essere impostato solo sui valori disponibili per il colore del carattere.

Colore riempimento

Colore dello sfondo della finestra in cui si trova il testo.

Può essere impostato su uno qualsiasi dei valori disponibili per il colore del carattere.

Opacità font

Opacità del testo.

Espresso in percentuale da 0 (completamente trasparente) a 100 (completamente opaco). DEFAULT_OPACITY il carattere è 100.

Opacità sfondo

Opacità della cella del carattere di sfondo.

Espresso in percentuale da 0 (completamente trasparente) a 100 (completamente opaco). DEFAULT_OPACITY per lo sfondo è 100.

Opacità riempimento

Opacità dello sfondo della finestra della didascalia.

Espresso in percentuale da 0 (completamente trasparente) a 100 (completamente opaco). DEFAULT_OPACITY per il riempimento è 0.

Interno inferiore

Distanza verticale dalla parte inferiore della finestra dei sottotitoli da evitare.

Espresso come percentuale dell'altezza della finestra dei sottotitoli (ad esempio, "20%") o come numero di pixel (ad esempio, "20").

Area utile

Area compresa tra 0% e 25% intorno al bordo dello schermo in cui i sottotitoli non verranno visualizzati.

Per impostazione predefinita, l'area di sicurezza per WebVTT è 0%. Questa impostazione consente all'applicazione di ignorare tale impostazione predefinita. Se vengono forniti due valori, ad esempio la stringa "10%,20%", il primo valore è l’area di sicurezza orizzontale e il secondo valore è l’area di sicurezza verticale. Se viene fornito un valore, ad esempio la stringa "15%", sia l'asse verticale che l'asse orizzontale utilizzano l'area di sicurezza specificata.

Esempi di formattazione dei sottotitoli

Di seguito sono riportati alcuni esempi che mostrano come specificare la formattazione dei sottotitoli.

private final MediaPlayer.PlaybackEventListener _playbackEventListener =
  new MediaPlayer.PlaybackEventListener() {
    @Override
    public void onPrepared() {
        // Set CC style.
        TextFormat tf = new TextFormatBuilder(
            TextFormat.Font.DEFAULT,
            TextFormat.Size.DEFAULT,
            TextFormat.FontEdge.DEFAULT,
            TextFormat.Color.DEFAULT.getValue(),
            TextFormat.Color.DEFAULT.getValue(),
            TextFormat.Color.DEFAULT.getValue(),
            TextFormat.Color.DEFAULT.getValue(),
            TextFormat.DEFAULT_OPACITY,
            TextFormat.DEFAULT_OPACITY,
            TextFormat.DEFAULT_OPACITY).toTextFormat();

        mediaPlayer.setCCStyle(tf);
        ...
    }
}
/**
* Constructor using parameters to initialize a TextFormat.
*
* @param font
* The desired font.
* @param size
* The desired text size.
* @param fontEdge
* The desired font edge.
* @param fontColor
* The desired font color.
* @param backgroundColor
* The desired background color.
* @param fillColor
* The desired fill color.
* @param edgeColor
* The desired color to draw the text edges.
* @param fontOpacity
* The desired font opacity.
* @param backgroundOpacity
* The desired background opacity.
* @param fillOpacity
* The desired fill opacity.
*/
public
<b>TextFormatBuilder</b>(
    Font font, Size size, FontEdge fontEdge,
    String fontColor, String backgroundColor,
    String fillColor, String edgeColor,
    int fontOpacity, int backgroundOpacity,
    int fillOpacity);
/**
* Creates a TextFormat with the parameters supplied to this builder.
*/
public TextFormat
<b>toTextFormat</b>();
/**
* Sets the text font.
* @param font The desired font
* @return This builder object to allow chaining calls
*/
public
<b>TextFormatBuilder</b> setFont(Font font);
...

In questa pagina