Show Menu
TOPICS×

Información general de seguimiento

Esta documentación abarca el seguimiento en la versión 2.x del SDK. Si va a implementar una versión 1.x del SDK, puede descargar las guías del desarrollador de 1.x aquí: Descargar SDK.

Eventos del reproductor

El seguimiento de la reproducción principal incluye el seguimiento de la carga, el inicio, la pausa y la finalización de los contenidos. Aunque no es obligatorio, el seguimiento del almacenamiento en búfer y de la llamada a otro punto del contenido también son componentes básicos utilizados para el seguimiento de la reproducción de contenido. En la API del reproductor de contenidos, identifique los eventos del reproductor correspondientes a las llamadas de seguimiento del Media SDK, y codifique los controladores de eventos para invocar las API de seguimiento y rellenar las variables necesarias y opcionales.

Carga del contenido

  • Crear el objeto de contenido.
  • Rellenar los metadatos.
  • Invocar
    trackSessionStart
    ; Por ejemplo:
    trackSessionStart(mediaObject, contextData)

Inicio del contenido

  • La llamada
    trackPlay

Pausa/Reanudación

  • La llamada
    trackPause
  • Invocar
    trackPlay
     
    cuando se reanude la reproducción

Finalización del contenido

  • La llamada
    trackComplete

Cancelación del contenido

  • La llamada
    trackSessionEnd

Inicio de arrastre de cabezal de reproducción

  • La llamada
    trackEvent(SeekStart)

Fin de arrastre de cabezal de reproducción

  • La llamada
    trackEvent(SeekComplete)

Inicio del almacenamiento en búfer

  • La llamada
    trackEvent(BufferStart);

Finalización del almacenamiento en búfer

  • La llamada
    trackEvent(BufferComplete);
La posición de cabezal de reproducción se establece como parte del código de creación y configuración. Para obtener más información sobre
getCurrentPlayheadTime
, consulte Información general: Directrices generales de implementación.

Implementación

  1. Configuración inicial del seguimiento
    : identifique cuándo el usuario activa la reproducción (cuando hace clic en reproducción o reproducción automática) y cree una instancia de
    MediaObject
    con la información del contenido: nombre, ID y duración del contenido, así como el tipo de emisión.
    MediaObject
    Referencia de:
    Nombre de variable
    Descripción
    Requerido
    name
    Nombre del contenido
    mediaid
    Identificador único del contenido
    length
    Duración del contenido
    streamType
    Tipo de emisión
    mediaType
    Tipo de contenido (contenido de audio o vídeo)
    Constantes de
    StreamType
    :
    Nombre de la constante
    Descripción
    VOD
    Tipo de emisión de vídeo bajo demanda.
    LIVE
    Tipo de emisión de contenido en directo.
    LINEAR
    Tipo de emisión de contenido lineal.
    AOD
    Tipo de emisión de audio a la carta.
    AUDIOBOOK
    Tipo de emisión de audiolibro.
    PODCAST
    Tipo de emisión de podcast.
    Constantes de
    MediaType
    :
    Nombre de la constante
    Descripción
    Audio
    Tipo de contenido para emisiones de audio.
    Video
    Tipo de contenido para emisiones de vídeo.
    El formato general para crear
    MediaObject
    es
    MediaHeartbeat.createMediaObject(<MEDIA_NAME>, <MEDIA_ID>, <MEDIA_LENGTH>, <STREAM_TYPE>, <MEDIA_TYPE>);
  2. Adjuntar metadatos
    : opcionalmente, se pueden adjuntar objetos de metadatos estándar o personalizados a la sesión de seguimiento mediante el uso de variables de datos de contexto.
    • Metadatos estándar -
      No es obligatorio adjuntar el objeto de metadatos estándar al objeto de contenidos.
      Cree una instancia de un objeto de metadatos estándar, rellene las variables deseadas y establezca el objeto de metadatos en el objeto de Media Heartbeat.
      Consulte la lista completa de metadatos aquí: Parámetros de audio y vídeo.
    • Metadatos personalizados
      : cree un objeto de variable para las variables personalizadas y rellénelo con los datos de este contenido.
  3. Seguimiento de la intención de inicio de reproducción
    : para comenzar el seguimiento de una sesión, invoque
    trackSessionStart
    en la instancia de Media Heartbeat.
    trackSessionStart
    rastrea la intención de reproducción, no el comienzo de la reproducción. Esta API se utiliza para cargar los datos y los metadatos, y para calcular la métrica de QoS (tiempo entre
    trackSessionStart
    y
    trackPlay
    ).
    Si no utiliza metadatos personalizados, envíe un objeto vacío para el argumento
    data
    en
    trackSessionStart
    .
  4. Seguimiento del inicio real de la reproducción
    : identifique el evento del reproductor de contenidos para el comienzo de la reproducción (cuando el primer fotograma del contenido aparece en pantalla) e invoque
    trackPlay
    .
  5. Seguimiento de la finalización de la reproducción
    : identifique el evento del reproductor de contenidos para la finalización de la reproducción (cuando el usuario ha visto el contenido hasta el final) e invoque
    trackComplete
    .
  6. Seguimiento del final de la sesión
    : identifique el evento del reproductor de contenidos para la descarga/cierre de la reproducción (el usuario cierra el contenido, o este finalizó y se descargó) e invoque
    trackSessionEnd
    .
    trackSessionEnd
    marca el final de una sesión de seguimiento. Si la sesión se ha visto por completo correctamente, es decir, el usuario ha visto el contenido hasta el final, asegúrese de invocar
    trackComplete
    antes que
    trackSessionEnd
    . Las demás llamadas de la API
    track*
    se pasan por alto después de
    trackSessionEnd
    (salvo
    trackSessionStart
    en una nueva sesión de seguimiento).
  7. Seguimiento de todas las situaciones de pausa posibles
    : identifique el evento del reproductor de contenidos para la pausa e invoque
    trackPause
    .
    Situaciones de pausa
    : identifique todas las situaciones en las que puede pausarse el reproductor y compruebe que se ha invocado
    trackPause
    correctamente. Las siguientes situaciones requieren que la aplicación invoque
    trackPause()
    :
    • Cuando el usuario pausa explícitamente en la aplicación.
    • Cuando el reproductor se sitúa en el estado En pausa.
    • (
      Aplicaciones móviles
      ): cuando el usuario coloca la aplicación en segundo plano, pero desea que la sesión continúe abierta.
    • (
      Aplicaciones móviles
      ): cuando se produce cualquier tipo de interrupción del sistema que provoca que una aplicación se quede en segundo plano. Por ejemplo, si el usuario recibe una llamada o aparece una ventana emergente de otra aplicación, pero desea que la aplicación mantenga la sesión activa para que el usuario pueda reanudar el contenido desde donde se produjo la interrupción.
  8. Identifique el evento del reproductor para la reproducción o reanudación después de la pausa e invoque
    trackPlay
    .
    Puede ser el mismo origen de evento empleado en el paso 4. Asegúrese de que cada llamada de API
    trackPause()
    esté emparejada con una llamada posterior a la API
    trackPlay()
    cuando se reanude la reproducción.
  9. Escuche los eventos de llamada a otro punto de la reproducción del reproductor de contenidos. En la notificación del evento de inicio de la llamada a otro punto del contenido, utilice el evento
    SeekStart
    para realizar el seguimiento.
  10. En la notificación de finalización de llamada a otro punto del contenido del reproductor, realice un seguimiento del final de la llamada a otro punto del contenido utilizando el evento
    SeekComplete
    .
  11. Escuche los eventos de almacenamiento en búfer de reproducción procedentes del reproductor de contenidos y, cuando reciba la notificación del evento Inicio de almacenamiento en búfer, rastree el almacenamiento en búfer mediante el evento
    BufferStart
    .
  12. En la notificación de Finalización de almacenamiento en búfer procedente del reproductor de contenidos, rastree el final del almacenamiento en búfer con el evento
    BufferComplete
    .
Consulte ejemplos de cada paso en los siguientes temas específicos para cada plataforma, y examine los reproductores de muestra incluidos con los SDK.
Para ver un sencillo ejemplo del seguimiento de la reproducción, consulte este uso del SDK de JavaScript 2.x en un HTML5 Player:
/* Call on media start */ if (e.type == "play") { // Check for start of media if (!sessionStarted) { /* Set media info */ /* MediaHeartbeat.createMediaObject(<MEDIA_NAME>, <MEDIA_ID>, <MEDIA_LENGTH>, <MEDIA_STREAMTYPE>, <MEDIA_MEDIATYPE>);*/ var mediaInfo = MediaHeartbeat.createMediaObject( document.getElementsByTagName('video')[0].getAttribute("name"), document.getElementsByTagName('video')[0].getAttribute("id"), video.duration, MediaHeartbeat.StreamType.VOD); /* Set custom context data */ var customVideoMetadata = { isUserLoggedIn: "false", tvStation: "Sample TV station", programmer: "Sample programmer" }; /* Set standard video metadata */ var standardVideoMetadata = {}; standardVideoMetadata[MediaHeartbeat.VideoMetadataKeys.EPISODE] = "Sample Episode"; standardVideoMetadata[MediaHeartbeat.VideoMetadataKeys.SHOW] = "Sample Show"; mediaInfo.setValue(MediaHeartbeat.MediaObjectKey.StandardVideoMetadata, standardVideoMetadata); // Start Session this.mediaHeartbeat.trackSessionStart(mediaInfo, customVideoMetadata); // Track play this.mediaHeartbeat.trackPlay(); sessionStarted = true; } else { // Track play for resuming playack this.mediaHeartbeat.trackPlay(); } }; /* Call on video complete */ if (e.type == "ended") { console.log("video ended"); this.mediaHeartbeat.trackComplete(); this.mediaHeartbeat.trackSessionEnd(); sessionStarted = false; }; /* Call on pause */ if (e.type == "pause") { this.mediaHeartbeat.trackPause(); }; /* Call on scrub start */ if (e.type == "seeking") { this.mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekStart); }; /* Call on scrub stop */ if (e.type == "seeked") { this.mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekComplete); }; /* Call on buffer start */ if (e.type == “buffering”) { this.mediaHeartbeat.trackEvent(MediaHeartbeat.Event.BufferStart); }; /* Call on buffer complete */ if (e.type == “buffered”) { this.mediaHeartbeat.trackEvent(MediaHeartbeat.Event.BufferComplete); };

Validación

Para obtener información sobre la validación de la implementación, consulte Validación.