2019-02-04 12:41:32 -08:00
< ? php
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
2024-01-16 10:41:11 -05:00
2019-02-04 12:41:32 -08:00
/*
* ABOUT THIS PHP SAMPLE: This sample is part of the Elastic Transcoder Developer Guide topic at
* https://docs.aws.amazon.com/elastictranscoder/latest/developerguide/introduction.html
*
*/
// snippet-start:[elastictranscoder.php.create_job_status_notification.import]
require 'path/to/autoload.php' ;
use Aws\ElasticTranscoder\ElasticTranscoderClient ;
$tmp_path = '/tmp' ;
// This will generate a 480p 16:9 mp4 output.
$preset_id = '1351620000001-000020' ;
2019-04-09 17:45:01 -07:00
// All inputs will have this prefix prepended to their input key.
2019-02-04 12:41:32 -08:00
$input_key_prefix = 'elastic-transcoder-samples/input/' ;
// All outputs will have this prefix prepended to their output key.
$output_key_prefix = 'elastic-transcoder-samples/output/' ;
// Region where you set up your AWS resources.
$region = 'us-east-1' ;
// Create the client for Elastic Transcoder.
$transcoder_client = ElasticTranscoderClient :: factory ([ 'region' => $region , 'default_caching_config' => '/tmp' ]);
// This function will create an Elastic Transcoder job using the supplied elastic
// transcoder client, pipeline id, input key and output key prefix. Output key
// is automatically set to SHA256(UTF8(<input-key>)).
function create_elastic_transcoder_job ( $transcoder_client , $pipeline_id , $input_key , $preset_id , $output_key_prefix )
{
// Set up the job input using the provided input key.
$input = [ 'Key' => $input_key ];
2024-02-05 10:49:20 -07:00
2019-02-04 12:41:32 -08:00
// Set up the job output using the provided input key to generate an output key.
$outputs = [[ 'Key' => hash ( " sha256 " , utf8_encode ( $input_key )), 'PresetId' => $preset_id ]];
2024-02-05 10:49:20 -07:00
2019-02-04 12:41:32 -08:00
// Create the job.
$create_job_request = [
'PipelineId' => $pipeline_id ,
'Input' => $input ,
'Outputs' => $outputs ,
'OutputKeyPrefix' => $output_key_prefix
];
$create_job_result = $transcoder_client -> createJob ( $create_job_request ) -> toArray ();
return $job = $create_job_result [ " Job " ];
}
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' ) {
// If the request method is POST, create a job using the posted data and save
// the job information into the status file.
try {
$job = create_elastic_transcoder_job (
$transcoder_client ,
$_POST [ 'pipelineid' ],
$_POST [ 'inputkey' ],
$preset_id ,
$output_key_prefix
);
$status_file = " $tmp_path / { $job [ 'Id' ] } " ;
file_put_contents ( $status_file , json_encode ( $job , true ) . " \n " , FILE_APPEND | LOCK_EX );
header ( " Location: JobStatusNotificationsSample.php?Id= { $job [ 'Id' ] } " );
} catch ( Exception $e ) {
echo " Exception occurred: { $e -> getMessage () } \n " ;
}
} elseif ( $_SERVER [ 'REQUEST_METHOD' ] && array_key_exists ( 'Id' , $_GET )) {
// If the request method is GET and 'Id' has been specified, then set the status file.
$status_file = " $tmp_path / { $_GET [ 'Id' ] } " ;
if ( is_file ( $status_file )) {
echo '<pre>' ;
echo file_get_contents ( $status_file );
echo '</pre>' ;
} else {
echo " No job status file found. " ;
}
} elseif ( $_SERVER [ 'REQUEST_METHOD' ] == 'GET' ) {
// If the request method is GET and no 'Id' is specified, return the HTML form
// which will allow the user to create an elastic transcoder job.
2019-04-09 17:45:01 -07:00
echo " Create an Elastic Transcoder job and consume job status using notifications.<br> " ;
2019-02-05 23:20:32 -08:00
echo " <form action= \" JobStatusNotificationsSample.php \" " ;
echo " method= \" POST \" >Pipeline Id: <input name= \" pipelineid \" type= \" text \" /> (<a href= \" " ;
echo " http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/sample-code.html#php-pipeline \" > " ;
echo " Create an Elastic Transcoder Pipeline</a>)<br>Input key: <input name= \" inputkey \" type= \" text \" /><br> " ;
echo " <input type= \" submit \" value= \" Create Job \" /></form> " ;
2019-02-04 12:41:32 -08:00
}
// snippet-end:[elastictranscoder.php.create_job_status_notification.import]