Implementación de mejoras de jugador para Live SSAI

En este tema, aprenderá a crear una transmisión en vivo con anuncios del lado del servidor que utiliza Player Enhancements for Live SSAI para mejorar la experiencia del usuario.

Introducción

Player Enhancements de Brightcove para Live SSAI le permite mejorar las pausas publicitarias en transmisiones en vivo con recuentos de anuncios, temporizadores de cuenta atrás de anuncios, anuncios de clics y anuncios complementarios.

La información de su anuncio se especifica mediante una configuración de anuncios que recupera respuestas VAST para identificar qué anuncios mostrar. El archivo VAST también contiene información sobre anuncios complementarios y URL de baliza.

Flujo de trabajo

Para crear una transmisión en vivo con SSAI y mejoras del reproductor, siga estos pasos:

  1. Pídale a su administrador de cuenta que habilite su cuenta para transmisiones en vivo, inserción de anuncios del lado del servidor (SSAI) y las mejoras del reproductor para SSAI en vivo.
  2. Crea una configuración de anuncios
  3. Opcional: Cree activos de pizarra para llenar el tiempo publicitario no utilizado
  4. Crea un trabajo en vivo
  5. Crea el token de reproducción
  6. Configurar el reproductor
  7. Comenzar a transmitir
  8. Activar anuncios usando puntos de referencia (esto se puede hacer antes o durante el evento en vivo)
  9. Limpiar

Crea una configuración de anuncios

Una configuración de anuncios define la información necesaria para incluir anuncios del lado del servidor con una transmisión en vivo. Esto incluye la URL del proveedor de anuncios, el tipo de respuesta del anuncio esperado y si se deben enviar balizas.

Para crear una nueva configuración de anuncios, envíe un POST solicitud de la siguiente manera:

Método POST
URL https://api.bcovlive.io/v1/ssai/applications
Encabezamiento X-API-KEY: your API KEY
Tipo de contenido: application/json

Todas las solicitudes se autentican mediante una clave API que se le proporciona cuando se configura su cuenta. La clave se pasa en el X-API-KEY encabezamiento.

Cuerpo de la solicitud

Para obtener detalles sobre los campos del cuerpo de la solicitud, consulte la Referencia de API en vivo documento.

Con Player Enhancements for Live SSAI, los campos resaltados se pueden configurar dentro del application_ad_configuration objeto.

Cuerpo de solicitud de muestra:

{
  "application_ad_configuration": {
	"ad_configuration_description": "your ad config description",
    "ad_configuration_expected_response_type": "Vast",
	"ad_configuration_headers_for_impressions": false,
	"ad_configuration_strategy": "SingleAdResponse",
	"ad_configuration_transforms": [],
	"ad_configuration_url_format": "your ad server",
    "ad_configuration_client_sdk_enabled": true,
    "client_options": {
      "show_ad_break_remaining_time": true / false,
      "show_ad_remaining_time": true / false,
      "show_number_of_remaining_ads": true / false,
      "client_only_tracking": true / false
    }
  },
  "application_description": "your application description"
}

Estos son los campos de configuración de anuncios relacionados con las mejoras del jugador con Live SSAI:

Campo Tipo Requerido Descripción
ad_configuration_expected_response_type cuerda Para esta función, las configuraciones de anuncios DEBEN tener un valor de Vast
ad_configuration_client_sdk_enabled booleano Para habilitar esta función, este campo debe tener un valor de true
client_options Objeto Un objeto de campos relacionados con las mejoras del jugador.
client_options.
show_ad_break_remaining_time
booleano Mostrar tiempo restante para una pausa publicitaria
Valores: true/false
client_options.
show_ad_remaining_time
booleano Mostrar tiempo restante para un anuncio
Valores: true/false
client_options.
show_number_of_remaining_ads
booleano Mostrar la cantidad de anuncios que quedan en la pausa publicitaria
Valores: true/false
client_options.
client_only_tracking
booleano Deshabilitar los eventos de seguimiento del lado del servidor (impresiones / cuartiles)
Valores: truefalse
Defecto: false


Respuesta

Respuesta de muestra:

{
  "application": {
    "application_description": "Test ad configuration",
    "application_ad_configuration": {
    "ad_configuration_description": "Ad config description",
    "ad_configuration_expected_response_type": "Vast",
    "ad_configuration_strategy": "SingleAdResponse",
    "ad_configuration_transforms": [],
    "ad_configuration_url_format": "https://solutions.brightcove.com/bcls/ads/simple-vast.xml",
    "ad_configuration_headers_for_impressions": false,
    "ad_configuration_client_sdk_enabled": true,
    "client_options": {
      "show_ad_break_remaining_time": true,
      "show_ad_remaining_time": true,
      "show_number_of_remaining_ads": true,
      "client_only_tracking": true
    }
    },
    "application_id": "1234567890abcdefghijkl",
    "application_type": "ads",
    "account_id": "001122334455aabbccddee"
  },
  "action": "inserted"
}

Una vez que haya creado correctamente una configuración de anuncios, copie el application_id (ID de configuración del anuncio) que se generó. Lo necesitará más tarde para encontrar la URL de reproducción SSAI.

Para enumerar, actualizar y eliminar configuraciones de anuncios, consulte la Administrar configuraciones de anuncios documento

Crea un trabajo en vivo

Para crear un trabajo en vivo, envíe un POST solicitud de la siguiente manera:

Método POST
URL https://api.bcovlive.io/v1/jobs
Encabezados X-API-KEY: your API KEY
Tipo de contenido: application/json

Cuerpo de la solicitud

Para obtener detalles sobre los campos del cuerpo de la solicitud, consulte la Referencia de API en vivo documento.

Para un trabajo en vivo con SSAI habilitado, configure ad_insertion: true en el cuerpo de su solicitud HTTP.

Solicitud de muestra (video de Video Cloud)

Para crear un video de Video Cloud para usar en su transmisión en vivo y para crear clips VOD a partir de la transmisión en vivo, incluya el videocloud objeto en el cuerpo de la solicitud. Para obtener más detalles, consulte la API en vivo: Creación de clips VOD documento.

El campo resaltado a continuación es necesario para la inserción de anuncios del lado del servidor (SSAI).

{
  "live_stream": true,
  "ad_insertion": true,
  "region": "us-west-2",
  "reconnect_time": 1800,
  "outputs": [{
      "label": "hls720p",
      "live_stream": true,
      "width": 1280,
      "height": 720,
      "video_codec": "h264",
      "h264_profile": "high",
      "video_bitrate": 2100,
      "segment_seconds": 4,
      "keyframe_interval": 60
    },
    {
      "label": "hls540p",
      "live_stream": true,
      "width": 960,
      "height": 540,
      "video_codec": "h264",
      "h264_profile": "main",
      "video_bitrate": 1500,
      "segment_seconds": 4,
      "keyframe_interval": 60
    },
    {
      "label": "hls360p",
      "live_stream": true,
      "width": 640,
      "height": 360,
      "video_codec": "h264",
      "h264_profile": "main",
      "video_bitrate": 800,
      "segment_seconds": 4,
      "keyframe_interval": 60
    }
  ],
  "videocloud": {
    "video": {
      "name": "Live SSAI VideoCloud Asset",
      "description": "",
      "long_description": "",
      "tags": [],
      "reference_id": "live_ssai_vc_asset",
      "link": {
      "url": "",
      "text": ""
    },
    "schedule": {
      "starts_at": null,
      "ends_at": null
    },
    "custom_fields": {}
    }
  }
}

Solicitud de muestra (video remoto)

Para usar un video remoto para su transmisión en vivo, el cuerpo de su solicitud debe verse similar a esto.

El campo resaltado a continuación es necesario para la inserción de anuncios del lado del servidor (SSAI).

{
  "live_stream":true,
  "ad_insertion":true,
  "region":"us-west-2",
  "reconnect_time":1800,
  "outputs":[
    {
      "label": "hls720p",
      "live_stream": true,
      "width": 1280,
      "height": 720,
      "video_codec": "h264",
      "h264_profile": "high",
      "video_bitrate": 2100,
      "segment_seconds": 4,
      "keyframe_interval": 60
    },
    {
      "label": "hls540p",
      "live_stream": true,
      "width": 960,
      "height": 540,
      "video_codec": "h264",
      "h264_profile": "main",
      "video_bitrate": 1500,
      "segment_seconds": 4,
      "keyframe_interval": 60
    },
    {
      "label": "hls360p",
      "live_stream": true,
      "width": 640,
      "height": 360,
      "video_codec": "h264",
      "h264_profile": "main",
      "video_bitrate": 800,
      "segment_seconds": 4,
      "keyframe_interval": 60
    }
  ]
}

Otros recursos útiles:

Respuesta

Respuesta de muestra (video de Video Cloud)
{
 "id": "227356abcdefghijklmno12345",
 "outputs": [
  {
   "id": "0-2273561a201ec18",
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls720p"
  },
  {
   "id": "1-2273561a201e8c18",
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls540p"
  },
  {
   "id": "2-2273561a201ec18",
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls360p"
  },
  {
   "id": "3-2273561a201ec18",
   "playlist_type": "defaultS3",
   "type": "playlist",
   "filename": "playlist.m3u8",
   "dvr_filename": "playlist_dvr.m3u8",
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist_dvr.m3u8",
   "ssai_playback_urls": {
    "b907ac7935e2": {
     "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_ssaiM.m3u8",
     "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_dvr_ssaiM.m3u8",
     "playback_added_cdns": [],
     "description": "Test ad configuration for SLS",
     "type": "ads"
    },
    "dc9aa8ee3520f2": {
     "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_ssaiM.m3u8",
     "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_dvr_ssaiM.m3u8",
     "playback_added_cdns": [],
     "description": "Test live ad config for SLS",
     "type": "ads"
    }
   },
   "playback_added_cdns": []
  }
 ],
 "stream_url": "rtmp://ec2-54-184-149-60.us-west-2.compute.amazonaws.com:1935/2273561a201ec18",
 "stream_name": "alive",
 "static": false,
 "job_videocloud_asset_id": "6227380655001",
 "encryption": {},
 "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist.m3u8",
 "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist_dvr.m3u8",
 "ssai_playback_urls": {
  "b907ac7935e2": {
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_ssaiM.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_dvr_ssaiM.m3u8",
   "playback_added_cdns": [],
   "description": "Test ad configuration for SLS",
   "type": "ads"
  },
  "dc9aa8ee3520f2": {
   "playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_ssaiM.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_dvr_ssaiM.m3u8",
   "playback_added_cdns": [],
   "description": "Test live ad config for SLS",
   "type": "ads"
  }
 },
 "playback_added_cdns": []
}

Respuesta de muestra (video remoto)
{
 "id": "bbccddeeffgghhiijjkk0011223344",
 "outputs": [
  {
   "id": "0-bbccddeeffgghhiijjkk0011223344",
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls720p"
  },
  {
   "id": "1-bbccddeeffgghhiijjkk0011223344",
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls540p"
  },
  {
   "id": "2-bbccddeeffgghhiijjkk0011223344",
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist_dvr.m3u8",
   "playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist_vod.m3u8",
   "playback_added_cdns": [],
   "label": "hls360p"
  },
  {
   "id": "3-bbccddeeffgghhiijjkk0011223344",
   "playlist_type": "defaultS3",
   "type": "playlist",
   "filename": "playlist.m3u8",
   "dvr_filename": "playlist_dvr.m3u8",
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist_dvr.m3u8",
   "ssai_playback_urls": {
    "91bc2d5ff4a4441db34c2457c751c3ca": {
     "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_ssaiM.m3u8",
     "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_dvr_ssaiM.m3u8",
     "playback_added_cdns": [],
     "description": "Test ad configuration",
     "type": "ads"
    },
    "e7f6e9a3022a45e1b0b322ba57399150": {
     "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/e7f6e9a3022a45e1b0b322ba57399150/playlist_ssaiM.m3u8",
     "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/e7f6e9a3022a45e1b0b322ba57399150/playlist_dvr_ssaiM.m3u8",
     "playback_added_cdns": [],
     "description": "House Ads - 0077db20eb444b5daa7487438c90a271",
     "type": "ads"
    }
   }
  }
 ],
 "stream_url": "rtmp://ep4-usw2.bcovlive.io:1935/bbccddeeffgghhiijjkk0011223344",
 "stream_name": "alive",
 "static": false,
 "encryption": {},
 "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist.m3u8",
 "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist_dvr.m3u8",
 "ssai_playback_urls": {
  "91bc2d5ff4a4441db34c2457c751c3ca": {
   "playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_ssaiM.m3u8",
   "playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_dvr_ssaiM.m3u8",
   "playback_added_cdns": [],
   "description": "Test ad configuration",
   "type": "ads"
  }
 }
}

De la respuesta de la API, tome nota de los siguientes valores de campo para el siguiente paso:

  • id- Tu identificación de trabajo en vivo
  • stream_url, stream_name - Entradas para su codificador de transmisión en vivo
  • job_videocloud_asset_id- Identificación de video de Video Cloud

Crea el token de reproducción

Necesitará el token de reproducción con su reproductor.

Para crear el token de reproducción, envíe un POST solicitud de la siguiente manera:

Método POST
URL https://api.bcovlive.io/v1/jobs/your live job id/playback-token
Encabezados X-API-KEY: your API KEY
Tipo de contenido: application/json

Cuerpo de la solicitud

Cuerpo de solicitud de muestra:

{
   "dvr":true / false,
   "application_id":"your ad config id"
}

Respuesta

Respuesta de muestra:

{
 "playback_token": "live.JhQabcdefghijkl000000000abcdefghi"
}

El cuerpo de la respuesta incluirá un token de reproducción generado. Úselo cuando realice una llamada a la API de reproducción con su reproductor.

Configurar el reproductor

El proceso de reproducción de su transmisión en vivo desde la API de reproducción es ligeramente diferente de la forma en que reproduce un video normal de Video Cloud. Además de proporcionar la identificación del video (identificación de referencia), debe incluir un token de reproducción que identifique la configuración de anuncios que desea usar. También deberá especificar si desea la reproducción de DVR.

Reproductor web

Para obtener detalles sobre la configuración de Brightcove Player, consulte la Uso de mejoras de reproductor para Live SSAI con Brightcove Player documento.

Reproductor nativo de Android

Para obtener detalles sobre la configuración de Native Player para Android, consulte la Uso de mejoras del reproductor para Live SSAI con los SDK nativos documento.

Reproductor nativo de iOS

Para obtener detalles sobre la configuración de Native Player para iOS, consulte la Uso de mejoras del reproductor para Live SSAI con los SDK nativos documento.

Comenzar a transmitir

Existen muchas herramientas para crear un evento de transmisión en vivo. Aquí hay algunos codificadores que puede usar para producir una transmisión en vivo entregada por una CDN:

Limpiar

Cuando su transmisión en vivo esté completa, puede limpiar los artefactos de su transmisión de la siguiente manera:

  1. Detenga su codificador de transmisión
  2. Cancele el trabajo en vivo.

    Para cancelar un trabajo en vivo, envíe un PUT solicitud de la siguiente manera:

    Método PUT
    URL https://api.bcovlive.io/v1/jobs/your live job id/cancel
    Encabezados X-API-KEY: your API KEY
    Tipo de contenido: application/json

    Para obtener más detalles, consulte la Referencia de API en vivo documento.

  3. Eliminar la configuración de su anuncio

    Para eliminar una configuración de anuncios, envíe un DELETE solicitud de la siguiente manera:

    Método PUT
    URL https://api.bcovlive.io/v1/ssai/applications/application/your ad config id
    Encabezados X-API-KEY: your API KEY
    Tipo de contenido: application/json

    Para obtener más detalles, consulte la Referencia de API en vivo documento.