diff options
Diffstat (limited to 'modules/video_zencoder/includes/README.markdown')
-rw-r--r-- | modules/video_zencoder/includes/README.markdown | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/modules/video_zencoder/includes/README.markdown b/modules/video_zencoder/includes/README.markdown new file mode 100644 index 0000000..0be2256 --- /dev/null +++ b/modules/video_zencoder/includes/README.markdown @@ -0,0 +1,199 @@ +Zencoder API PHP Library +========================== + +Author: [Steve Heffernan](http://www.steveheffernan.com) (steve (a) zencoder (.) com) +Company: [Zencoder - Online Video Encoder](http://zencoder.com) +Version: 1.1 +Date: 2010-06-04 +Repository: <http://github.com/zencoder/zencoder-php/> + +For more details on the Zencoder API requirements visit +<http://zencoder.com/docs/api> + + +ENCODING JOB +------------ +The ZencoderJob object creates an encoding job using [cURL](http://zencoder.com/docs/glossary/curl/) +to send [JSON](http://zencoder.com/docs/glossary/json/) formatted parameters to Zencoder's encoding API. + +### Step 1 +Visit the [API builder](https://app.zencoder.com/api_builder) in your account, +and execute a successful encoding job. + +### Step 2 +Copy the successful JSON string, starting with the first curly brace "{", +and pass it as the parameters for a new ZencoderJob object. Execute the script on your server to test that it works. + +#### Example + <pre> + <?php + + // Make sure this points to a copy of Zencoder.php on the same server as this script. + require_once("zencoder-php/Zencoder.php"); + + // New Encoding Job + $encoding_job = new ZencoderJob(' + { + "api_key": "93h630j1dsyshjef620qlkavnmzui3", + "input": "s3://bucket-name/file-name.avi" + "outputs": [ + { + "label": "web" + } + ] + } + '); + + // Check if it worked + if ($encoding_job->created) { + // Success + echo "w00t! \n\n"; + echo "Job ID: ".$encoding_job->id."\n"; + echo "Output '".$encoding_job->outputs["web"]->label."' ID: ".$encoding_job->outputs["web"]->id."\n"; + // Store Job/Output IDs to update their status when notified or to check their progress. + } else { + // Failed + echo "Fail :(\n\n"; + echo "Errors:\n"; + foreach($encoding_job->errors as $error) { + echo $error."\n"; + } + } + + echo "\nAll Job Attributes:\n"; + var_dump($encoding_job); + + ?> + </pre> + +### Step 3 +Modify the above script to meet your needs. +Your [API Request History](https://app.zencoder.com/api_requests) may come in handy. +You can revisit your [API builder](https://app.zencoder.com/api_builder) to add/update parameters of the JSON. + +You can translate the JSON string into nested associative arrays so that you can dynamically change attributes like "input". +The previous JSON example would become: + + $encoding_job = new ZencoderJob(array( + "api_key" => "93h630j1dsyshjef620qlkavnmzui3", + "input" => "s3://bucket-name/file-name.avi", + "outputs" => array( + array( + "label" => "web" + ) + ) + )); + + +GENERAL API REQUESTS +-------------------- +A general API request can be used for all API functionality including **Job Listing**, **Job Details**, **Account Creation**, **Account Details** (even Job Creation if desired). See the [API docs](http://zencoder.com/docs/api/) for all possible API requests. +The first argument is the **API URL**. +The second argument is your **API Key**. +The third argument is the **request parameters** if needed. It can either be a JSON string or an array of parameters. + + +#### Example Job List Request + + $request = new ZencoderRequest( + 'https://app.zencoder/api/jobs', + '93h630j1dsyshjef620qlkavnmzui3' + ); + + if ($request->successful) { + print_r($request->results); + } else { + foreach($request->errors as $error) { + echo $error."\n"; + } + } + +#### Example Account Creation Request + + $request = new ZencoderRequest( + 'https://app.zencoder/api/account', + false, // API key isn't needed for new account creation + array( + "terms_of_service" => "1", + "email" => "test@example.com", + "password" => "1234" + ) + ); + + if ($request->successful) { + print_r($request->results); + } else { + foreach($request->errors as $error) { + echo $error."\n"; + } + } + + +NOTIFICATION HANDLING +---------------------- +The ZencoderOutputNotification class is used to capture and parse JSON data sent from +Zencoder to your app when an output file has been completed. + + + +### Step 1 +Create a script to receive notifications, and upload it to a location on your server that is publicly accessible. + +#### Example + <?php + + // Make sure this points to a copy of Zencoder.php on the same server as this script. + require("Zencoder.php"); + + // Catch notification + $notification = ZencoderOutputNotification::catch_and_parse(); + + // Check output/job state + if($notification->output->state == "finished") { + echo "w00t!\n"; + + // If you're encoding to multiple outputs and only care when all of the outputs are finished + // you can check if the entire job is finished. + if($notification->job->state == "finished") { + echo "Dubble w00t!"; + } + } elseif ($notification->output->state == "cancelled") { + echo "Cancelled!\n"; + } else { + echo "Fail!\n"; + echo $notification->output->error_message."\n"; + echo $notification->output->error_link; + } + + ?> + +### Step 2 +In the parameters for an encoding job, add the URL for your script to the notifications array of each output you want to be notified for. +Then submit the job to test if it works. + +**You can view the results at:** +<https://app.zencoder.com/notifications> + +#### Example + ... + "outputs" => array( + array( + "label" => "web", + "notifications" => array("http://example.com.com/encoding/notification.php") + ), + array( + "label" => "iPhone", + "notifications" => array("http://example.com.com/encoding/notification.php") + ) + ) + ... + + +### Step 3 +Modify the above script to meet your needs. +Your [notifications page](https://app.zencoder.com/notifications) will come in handy. + +VERSIONS +--------- + Version 1.1 - 2010-06-04 Added General API Requests + Version 1.0 - 2010-04-02 Jobs and Notifications.
\ No newline at end of file |