function _video_zencoder_postback_jobs in Video 7
Same name and namespace in other branches
- 6.5 plugins/video_zencoder/video_zencoder.module \_video_zencoder_postback_jobs()
- 6.4 plugins/video_zencoder/video_zencoder.module \_video_zencoder_postback_jobs()
This will handle Zencoder postback once video conversion is completed
1 string reference to '_video_zencoder_postback_jobs'
- video_zencoder_menu in modules/
video_zencoder/ video_zencoder.module - Implementation of hook_menu().
File
- modules/
video_zencoder/ video_zencoder.module, line 41 - Provides wrapper functions for the s3 amazon webservices. @todo
Code
function _video_zencoder_postback_jobs() {
// get JSON post data
$data = file_get_contents("php://input");
watchdog('zencoder', t('Postback received from the Zencoder Transcoding servers.' . serialize($data)));
// get the file object by zenocder job id
$video = json_decode($data);
// print_r($zc);
// $zc_job_id = $video->job->id;
$zc_job_state = trim($video->job->state);
// $zc_output_id = $video->output->id;
$zc_output_state = trim($video->output->state);
// $zc_output_url = $video->output->url;
if ($zc_output_state == 'finished' && $zc_job_state == 'finished') {
$video->output->state = VIDEO_RENDERING_COMPLETE;
}
if ($zc_output_state == 'failed' || $zc_job_state == 'failed') {
$video->output->state = VIDEO_RENDERING_FAILED;
}
if ($zc_job_state == 'processing') {
watchdog('zencoder', t('Job !jobid is processing.', array(
'!jobid' => $video->job->id,
)));
return;
}
// update the Zencoder Job
module_load_include('inc', 'video_zencoder', '/includes/transcoder/video_zencoder');
$zc = new video_zencoder();
// Lets run delete.
$videodb = $zc
->load_job_by_jobid($video->job->id);
if ($video->output->state == VIDEO_RENDERING_COMPLETE) {
$nid = $videodb->nid;
$vid = $videodb->vid;
$fid = $videodb->fid;
$zc
->change_status($vid, VIDEO_RENDERING_COMPLETE);
// update the thumbanils
// this will update the default thumbnails, if user want to select another one then they wil need to edit the node
// Setup our thmbnail path.
$video_thumb_path = variable_get('video_thumb_path', 'videos/thumbnails');
$final_thumb_path = file_default_scheme() . '://' . $video_thumb_path . '/' . $fid;
// Ensure the destination directory exists and is writable.
file_prepare_directory($final_thumb_path, FILE_CREATE_DIRECTORY);
// $i = rand(0, (variable_get('no_of_video_thumbs', 5) - 1));
$filename = $fid . '_' . sprintf("%04d", 1) . '.png';
$thumbfile = $final_thumb_path . '/' . $filename;
// s3
libraries_load('awssdk');
$key = variable_get('media_amazon_key', '');
$secret_key = variable_get('media_amazon_key_secret', '');
$bucket = variable_get('media_amazon_s3_bucket', '');
$s3 = new AmazonS3($key, $secret_key);
if ($s3
->get_object_metadata($bucket, $video_thumb_path . '/' . $fid . '/' . $filename)) {
$response = $s3
->get_object($bucket, $video_thumb_path . '/' . $fid . '/' . $filename, array(
'fileDownload' => drupal_realpath($thumbfile),
));
$default = $final_thumb_path . '/no-thumb.png';
@unlink(drupal_realpath($default));
if ($response->status == 200) {
watchdog('zencoder', t('Successfully downloaded the thumbnails file and replaced the default image.'));
}
else {
watchdog('zencoder', t('Download thumbanils files is failed.'), array(), WATCHDOG_ERROR);
}
}
watchdog('zencoder', t('No thumbanils found.', array(
'!id' => $video->job->id,
'!states' => $zc_output_state,
)));
}
else {
if ($video->output->state == VIDEO_RENDERING_FAILED) {
// echo 'working failed';
$zc
->change_status($vid, VIDEO_RENDERING_FAILED);
watchdog('zencoder', t('Zencoder job failed converting videos, please login to zencoder web and check the erros.', array()), NULL, WATCHDOG_ERROR);
}
else {
echo 'zencoder postback is working';
}
}
}