Aperçu
Une fois qu'un travail ou un fichier de sortie est terminé, vous pouvez en savoir plus de plusieurs manières.
- Nous pouvons POSTER une requête HTTP à votre application avec les détails.
- Vous pouvez demander vos notifications à l'aide d'un outil tiers tel que ngrok. Ceci est utile lorsque vous développez localement et que Zencoder ne peut pas atteindre votre serveur de développement.
- Nous pouvons envoyer un e-mail.
- Vous pouvez consulter le tableau de bord Zencoder pour connaître l'état de la tâche.
Recevez des notifications HTTP / e-mail
Pour recevoir des notifications HTTP ou par e-mail, ajoutez des options de notification à votre demande d'API, comme ceci :
{
"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"
]
}
]
}
Dans cet exemple, lorsque le premier fichier de sortie est terminé, deux notifications sont envoyées :
- Envoyer un e-mail à
admin@example.com
avec des informations sur la sortie et l'entrée/tâche. - HTTP POST vers
http://user:password@example.com/zencoder
avec un en-tête Content-Type défini sur 'application / json' avec des informations sur la sortie et l'entrée / le travail.
Lorsque le deuxième fichier de sortie est terminé, quatre autres notifications seront envoyées :
- HTTP POST vers
http://example.com/zencoder1
avec un en-tête Content-Type défini sur 'application / xml' avec des informations sur la sortie et l'entrée. - HTTP POST vers
http://example.com/zencoder2
avec un en-tête Content-Type défini sur 'application / json' avec des informations sur la sortie et l'entrée / le travail. - Envoyer un e-mail à
admin@example.com
avec des informations sur la sortie et l'entrée/tâche. - HTTP POST vers
http://example.com/zencoder3
avec un en-tête Content-Type défini sur 'application / json' avec des informations sur la sortie et l'entrée / le travail.
Une fois la tâche terminée, deux autres notifications seront envoyées :
- Envoyer à
admin@example.com
avec des informations sur la sortie et l'entrée. - HTTP POST vers
http://user:password@example.com/zencoder
avec un en-tête Content-Type défini sur 'application / json' avec des informations sur la sortie et l'entrée.
Remarque : Si Zencoder ne parvient pas à se connecter avec succès au serveur cible lors de l'envoi d'une notification, la notification sera mise en file d'attente pour réessayer. La notification sera tentée jusqu'à 20 fois, le délai entre les tentatives doublant à chaque fois.
Notifications HTTP
Les notifications contiennent un contenu riche avec beaucoup plus d'informations sur le travail et les fichiers d'entrée et de sortie. Le corps de la notification peut contenir du JSON ou du XML. Si les téléchargements échouent, les notifications contiendront également des informations sur erreurs et serveurs de sauvegarde utilisés.
Exemple de notification de travail
{
"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"
}
}
Exemple de notification de sortie
{
"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"
}
}
Exemple de gestionnaire de notification
Vous trouverez ci-dessous une application PHP simple pour gérer les notifications.
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";
?>