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:
- 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.
- Crea una configuración de anuncios
- Opcional: Cree activos de pizarra para llenar el tiempo publicitario no utilizado
- Crea un trabajo en vivo
- Crea el token de reproducción
- Configurar el reproductor
- Comenzar a transmitir
- Activar anuncios usando puntos de referencia (esto se puede hacer antes o durante el evento en vivo)
- 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 | Sí | Para esta función, las configuraciones de anuncios DEBEN tener un valor de Vast |
ad_configuration_client_sdk_enabled |
booleano | Sí | 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. |
booleano | Mostrar tiempo restante para una pausa publicitaria Valores: true /false
|
|
client_options. |
booleano | Mostrar tiempo restante para un anuncio Valores: true /false
|
|
client_options. |
booleano | Mostrar la cantidad de anuncios que quedan en la pausa publicitaria Valores: true /false
|
|
client_options. |
booleano | Deshabilitar los eventos de seguimiento del lado del servidor (impresiones / cuartiles) Valores: true false 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:
- Descripción general: API de Brightcove Live
- Inicio rápido: Cree una transmisión en vivo con la API en vivo de Brightcove
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 vivostream_url
,stream_name
- Entradas para su codificador de transmisión en vivojob_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:
- Detenga su codificador de transmisión
-
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.
-
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.