Resumen
Una vez finalizado un trabajo o un archivo de salida, puede averiguarlo de varias formas.
- Podemos PUBLICAR una solicitud HTTP a su aplicación con los detalles.
- Puede solicitar sus notificaciones utilizando una herramienta de terceros como ngrok. Esto es útil cuando está desarrollando localmente y Zencoder no puede acceder a su servidor de desarrollo.
- Podemos enviar un correo electrónico.
- Puede consultar el panel de Zencoder para ver el estado del trabajo.
Recibe notificaciones HTTP / por correo electrónico
Para recibir notificaciones HTTP o por correo electrónico, agregue Opciones de notificación a su solicitud de API, así:
{
"api_key": "93h630j1dsyshjef620qlkavnmzui3",
"input": "s3://bucket-name/file-name.avi",
"notifications": [
"http://user:password@example.com/zencoder",
"admin@example.com"
],
"outputs": [
{
"label": "web",
"url": "s3://output-bucket/web.mp4",
"size": "512x384",
"notifications": [
"http://user:password@example.com/zencoder",
"admin@example.com"
]
},
{
"label": "iphone",
"url": "s3://output-bucket/iphone.m4v",
"size": "480x320",
"notifications": [
{"format": "xml", "url": "http://user:password@example.com/zencoder1"},
{"format": "json", "url": "http://user:password@example.com/zencoder2"},
"http://example.com/zencoder3",
"admin@example.com"
]
}
]
}
En este ejemplo, cuando se completa el primer archivo de salida, se enviarán dos notificaciones:
- Email para
admin@example.com
con información sobre la salida y la entrada / trabajo. - HTTP POST para
http://user:password@example.com/zencoder
con un encabezado Content-Type establecido en 'application / json' con información sobre la salida y la entrada / trabajo.
Cuando el segundo archivo de salida esté completo, se enviarán cuatro notificaciones más:
- HTTP POST para
http://example.com/zencoder1
con un encabezado Content-Type establecido en 'application / xml' con información sobre la salida y la entrada. - HTTP POST para
http://example.com/zencoder2
con un encabezado Content-Type establecido en 'application / json' con información sobre la salida y la entrada / trabajo. - Email para
admin@example.com
con información sobre la salida y la entrada / trabajo. - HTTP POST para
http://example.com/zencoder3
con un encabezado Content-Type establecido en 'application / json' con información sobre la salida y la entrada / trabajo.
Cuando se complete el trabajo, se enviarán dos notificaciones más:
- Email para
admin@example.com
con información sobre la salida y la entrada. - HTTP POST para
http://user:password@example.com/zencoder
con un encabezado Content-Type establecido en 'application / json' con información sobre la salida y la entrada.
Nota: Si Zencoder no puede conectarse correctamente al servidor de destino al enviar una notificación, la notificación se pondrá en cola para volver a intentarlo. La notificación se intentará hasta 20 veces, y la demora entre intentos se duplicará cada vez.
Notificaciones HTTP
Las notificaciones contienen contenido enriquecido con mucha más información sobre el trabajo y los archivos de entrada y salida. El cuerpo de la notificación puede contener JSON o XML. Si las cargas fallan, las notificaciones también contendrán información sobre errores y servidores de respaldo utilizados.
Ejemplo de notificación de trabajo
{
"outputs":[
{
"height":120,
"audio_sample_rate":8000,
"frame_rate":8.0,
"channels":"1",
"duration_in_ms":1920,
"video_bitrate_in_kbps":70,
"video_codec":"h264",
"format":"mpeg4",
"audio_codec":"aac",
"label":null,
"file_size_in_bytes":17938,
"width":160,
"audio_bitrate_in_kbps":9,
"id":235314,
"total_bitrate_in_kbps":79,
"state":"finished",
"url":"ftp://example.com/file.mp4",
"md5_checksum":"7f106918e02a69466afa0ee014172496",
"thumbnails": [
{
"label":"poster",
"images":
[
{
"url": "ftp://example.com/images/123.png",
"format": "PNG",
"file_size_bytes": 1273573,
"dimensions": "1280x720"
}
]
}
]
},
{
"height":120,
"audio_sample_rate":8000,
"frame_rate":8.0,
"channels":"1",
"duration_in_ms":1920,
"video_bitrate_in_kbps":70,
"video_codec":"h264",
"format":"mpeg4",
"audio_codec":"aac",
"label":null,
"file_size_in_bytes":17938,
"width":160,
"audio_bitrate_in_kbps":9,
"id":235314,
"total_bitrate_in_kbps":79,
"state":"finished",
"url":"ftp://example.com/file.mp4",
"md5_checksum":"7f106918e02a69466afa0ee014172496",
"thumbnails": [
{
"label":"poster",
"images":
[
{
"url": "ftp://example.com/images/123.png",
"format": "PNG",
"file_size_bytes": 1273573,
"dimensions": "1280x720"
}
]
}
]
}
],
"job":{
"created_at":"2011-09-27T04:20:10Z",
"pass_through":null,
"updated_at":"2011-09-27T04:21:18Z",
"submitted_at":"2011-09-27T04:20:10Z",
"id":172151,
"state":"finished"
},
"input":{
"height":120,
"audio_sample_rate":8000,
"frame_rate":8.0,
"channels":"1",
"duration_in_ms":1552,
"video_bitrate_in_kbps":32,
"video_codec":"mpeg4",
"format":"mpeg4",
"audio_codec":"aac",
"file_size_in_bytes":13960,
"width":160,
"audio_bitrate_in_kbps":9,
"id":172149,
"state":"finished",
"total_bitrate_in_kbps":41,
"md5_checksum":"7f106918e02a69466afa0ee014174143"
}
}
Ejemplo de notificación de salida
{
"output":{
"height":120,
"audio_sample_rate":8000,
"frame_rate":8.0,
"channels":"1",
"duration_in_ms":1920,
"video_bitrate_in_kbps":70,
"video_codec":"h264",
"format":"mpeg4",
"audio_codec":"aac",
"label":null,
"file_size_in_bytes":17938,
"width":160,
"audio_bitrate_in_kbps":9,
"id":235314,
"total_bitrate_in_kbps":79,
"state":"finished",
"url":"ftp://example.com/file.mp4",
"md5_checksum":"7f106918e02a69466afa0ee014172496",
"thumbnails":
[
{
"label":"poster",
"images":
[
{
"url": "ftp://example.com/images/123.png",
"format": "PNG",
"file_size_bytes": 1273573,
"dimensions": "1280x720"
}
]
}
]
},
"job":{
"created_at":"2011-09-27T04:20:10Z",
"pass_through":null,
"updated_at":"2011-09-27T04:21:18Z",
"submitted_at":"2011-09-27T04:20:10Z",
"id":172151,
"state":"finished"
},
"input":{
"height":120,
"audio_sample_rate":8000,
"frame_rate":8.0,
"channels":"1",
"duration_in_ms":1552,
"video_bitrate_in_kbps":32,
"video_codec":"mpeg4",
"format":"mpeg4",
"audio_codec":"aac",
"file_size_in_bytes":13960,
"width":160,
"audio_bitrate_in_kbps":9,
"id":172149,
"state":"finished",
"total_bitrate_in_kbps":41,
"md5_checksum":"7f106918e02a69466afa0ee014174143"
}
}
Manejador de notificaciones de muestra
A continuación se muestra una aplicación PHP simple para manejar notificaciones.
getMessage();
$notification = $json;
}
$logEntry = $notification."\n \n";
// Tell PHP where it can find the log file and tell PHP to open it
// and add the string we created earlier to it.
$logFileLocation = "live-log.txt";
$fileHandle = fopen($logFileLocation, 'a') or die("-1");
fwrite($fileHandle, $logEntry);
fclose($fileHandle);
// line below is displayed when you browse the app directly
echo "Zencoder callback app is running";
?>