2012-07-15 1 views
1

Je travaille avec certaines vidéos sur PHP, en utilisant zencoder pour encoder les vidéos, les enregistrer sur s3 et ensuite notifier mon site quand tout est fait. Tout fonctionne jusqu'à ce que je dois traiter les notifications renvoyées comme json et sortir la nouvelle URL de la vidéo enregistrée.notifications zencoder json

ceci:

$notification = $zencoder->notifications->parseIncoming(); 

if($notification->job->state == "finished") 
{ 
    $encode_id=$notification->job->id; 
} 

fonctionne très bien. J'ai juste besoin de quelques conseils pour accéder à l'url.

La notification est envoyée comme:

{ 
    "output": { 
     "frame_rate": 30.0, 
     "label": "video_id_", 
     "total_bitrate_in_kbps": 3115, 
     "md5_checksum": null, 
     "channels": "2", 
     "audio_codec": "aac", 
     "duration_in_ms": 4225, 
     "video_codec": "h264", 
     "url": "http://my_url/597bd3592bf4a9d70f04dc676c44de6d.mp4", 
     "thumbnails": [{ 
      "label": null, 
      "images": [{ 
       "url": "http://my_url/_key__0000.png", 
       "format": "PNG", 
       "dimensions": "640x360", 
       "file_size_bytes": 482422 
      }] 
     }], 
     "video_bitrate_in_kbps": 3052, 
     "width": 640, 
     "format": "mpeg4", 
     "height": 360, 
     "audio_sample_rate": 44100, 
     "state": "finished", 
     "audio_bitrate_in_kbps": 63, 
     "id": 41424918, 
     "file_size_in_bytes": 1625847 
    }, 
    "input": { 
     "frame_rate": 30.0, 
     "total_bitrate_in_kbps": 3867, 
     "md5_checksum": null, 
     "channels": "2", 
     "audio_codec": "aac", 
     "duration_in_ms": 4167, 
     "video_codec": "h264", 
     "video_bitrate_in_kbps": 3764, 
     "width": 640, 
     "format": "mpeg4", 
     "height": 360, 
     "audio_sample_rate": 44100, 
     "state": "finished", 
     "audio_bitrate_in_kbps": 103, 
     "id": 22371764, 
     "file_size_in_bytes": 2028809 
    }, 
    "job": { 
     "created_at": "2012-07-14T22:25:08Z", 
     "test": true, 
     "updated_at": "2012-07-14T22:25:47Z", 
     "submitted_at": "2012-07-14T22:25:08Z", 
     "pass_through": null, 
     "state": "finished", 
     "id": 22377083 
    } 
} 

mais quelque chose comme: $video_file=$notification->output->url; ne fonctionne pas. Qu'est-ce qui me manque?

+1

$ notification-> output-> URL doit être accessible si vous json_decode() 'd l'objet correctement. Avez-vous des erreurs lorsque vous essayez d'accéder à $ notification-> output-> url? –

Répondre

2

Si vous ne souhaitez pas utiliser la méthode parseIncoming ... Utilisation:

$notification = json_decode(trim(file_get_contents('php://input')), true); 

par opposition à:

$notification = $zencoder->notifications->parseIncoming(); 

La deuxième paramater des résultats formatera 'true' en tant que tableau tel qu'apposé à un objet. De là, vous pouvez accéder à toutes les valeurs telles que:

$notification['output']['file_size_in_bytes']; 

La méthode parseIncoming renvoie une stdClass, faisant référence si des valeurs dans elle est faite avec:

$notification->key