Contenido de notificación

Los objetos MediaPlayerNotification proporcionan información sobre cambios en el estado del reproductor, advertencias y errores. Los errores que detienen la reproducción del vídeo también provocan un cambio en el estado del reproductor.

La aplicación puede recuperar la notificación y la información de estado. También puede crear un sistema de registro para diagnósticos y validación mediante la información de notificación.

Los oyentes de eventos se implementan para capturar y responder a eventos. Muchos eventos proporcionan notificaciones de estado MediaPlayerNotification.

MediaPlayerNotification proporciona información relacionada con el estado del reproductor.

TVSDK proporciona una lista cronológica de notificaciones MediaPlayerNotification. Cada notificación contiene la siguiente información:

  • Marca de tiempo

  • Metadatos de diagnóstico que constan de los siguientes elementos:

    • type: INFO, WARN o ERROR.

    • code: Una representación numérica de la notificación.

    • name: Una descripción de la notificación legible en lenguaje natural, como SEEK_ERROR

    • metadata: Pares clave/valor que contienen información relevante sobre la notificación. Por ejemplo, una clave denominada URL proporciona un valor que es una dirección URL relacionada con la notificación.

    • innerNotification: Referencia a otro MediaPlayerNotification objeto que afecta directamente a esta notificación.

Puede almacenar esta información localmente para análisis posteriores o enviarla a un servidor remoto para el registro y la representación gráfica.

Configure el sistema de notificaciones

Puede escuchar notificaciones y agregar sus propias notificaciones al historial de notificaciones.

El núcleo del sistema de notificación de Primetime Player es la clase Notification, que representa una notificación independiente.

La clase NotificationHistory proporciona un mecanismo para acumular notificaciones. Almacena un registro de objetos Notification (NotificationHistoryItem) que representa una colección de Notificaciones.

Para recibir notificaciones:

  • Escuchar notificaciones
  • Añadir notificaciones al historial de notificaciones
  1. Escuche los cambios de estado.

  2. Implemente la llamada de retorno MediaPlayer.PlaybackEventListener.onStateChanged.

  3. TVSDK pasa dos parámetros a la rellamada:

    • El nuevo estado ( MediaPlayer.PlayerState)
    • Un objeto MediaPlayerNotification

Añadir el registro en tiempo real y la depuración

Puede utilizar notificaciones para implementar el registro en tiempo real en la aplicación de vídeo.

El sistema de notificaciones le permite recopilar información de registro y depuración para realizar diagnósticos y validaciones sin tener que enfatizar demasiado el sistema.

IMPORTANTE

El back-end de registro no forma parte de una configuración de producción y no se espera que gestione tráfico de alta carga. Si su implementación no necesita ser absolutamente completa, considere la eficacia de la transmisión de datos para evitar sobrecargar su sistema.

A continuación, se muestra un ejemplo de cómo recuperar notificaciones.

  1. Cree un subproceso de ejecución basado en temporizador para la aplicación de vídeo que consulte periódicamente los datos recopilados por el sistema de notificación TVSDK.

  2. Si el intervalo del temporizador es demasiado grande y el tamaño de la lista de eventos es demasiado pequeño, la lista de eventos de notificación se desbordará. Para evitar este desbordamiento, realice una de las siguientes acciones:

    • Disminuya el intervalo de tiempo que impulsa el subproceso que sondea por nuevos eventos.
    • Aumente el tamaño de la lista de notificaciones.
  3. Serialice las entradas de evento de notificación más recientes en formato JSON y envíe las entradas a un servidor remoto para su posprocesamiento.

    El servidor remoto podría mostrar gráficamente los datos proporcionados en tiempo real.

  4. Para detectar la pérdida de eventos de notificación, busque espacios en la secuencia de valores de índice de eventos.

    Cada evento de notificación tiene un valor de índice que se incrementa automáticamente con la clase session.NotificationHistory.

Etiquetas ID3

Las etiquetas ID3 proporcionan información sobre un archivo de audio o vídeo, como el título del archivo o el nombre del artista. TVSDK detecta las etiquetas ID3 en el nivel de segmento de flujo de transporte (TS) en flujos HLS y envía un evento. La aplicación puede extraer datos de la etiqueta .

IMPORTANTE

TVSDK reconoce los metadatos ID3 (versión 2.3.0 o 2.4.0) en las emisiones de audio (AAC) y vídeo (H.264), en cualquiera de sus posibles codificaciones (ASCII, UTF8, UTF16-BE o UTF16-LE). Ignora las etiquetas ID3 que no están en una de las versiones o formatos reconocidos. La codificación no especificada se trata como UTF8.

Cuando TVSDK detecta metadatos ID3, envía una notificación con los siguientes datos:

  • InfoCode = 303007
  • TIPO = ID3
  • NAME = no presente
  • ID = 0
  1. Implemente un detector de eventos para MediaPlayer.PlaybackEventListener#onTimedMetadata(TimeMetadata timeMetadata) y regístrelo con el objeto MediaPlayer.

    TVSDK llama a este oyente cuando detecta metadatos de ID3.

    NOTA

    Las señales de publicidad personalizadas utilizan el mismo evento onTimedMetadata para indicar la detección de una etiqueta nueva. Esto no debería causar ninguna confusión, ya que las señales de anuncios personalizadas se detectan en el nivel de manifiesto y las etiquetas ID3 están incrustadas en el flujo. Para obtener más información, consulte custom-tags-configure .

  2. Recupere los metadatos.

    @Override 
    public void onTimedMetadata(TimedMetadata timedMetadata) { 
        TimedMetadata.Type type = timedMetadata.getType(); 
        if (type.equals(TimedMetadata.Type.ID3)){ 
            long time = timeMetadata.getTime(); 
            Metadata metadata = timedMetadata.getMetadata(); 
            Set<String> keys = metadata.keySet(); 
            for (String key : keys){ 
                String value = metadata.getValue(key); 
            } 
        } 
    }
    

En esta página