Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

zencoder/zencoder-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Zencoder API PHP Library
==========================

Author:  [Michael Christopher] (m (a) zencoder (.) com)
Company: [Zencoder - Online Video Encoder](http://www.zencoder.com)  
Version: 2.0
Date:    2011-12-05
Repository: <http://github.com/zencoder/zencoder-php/>  

For more details on the Zencoder API requirements visit  
<http://app.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('Services/Zencoder.php');

    // Initialize the Services_Zencoder class
    $zencoder = new Services_Zencoder('93h630j1dsyshjef620qlkavnmzui3');

    // New Encoding Job
    $encoding_job = $zencoder->jobs->create('
      {
        "input": "s3://bucket-name/file-name.avi",
        "outputs": [
          {
            "label": "web"
          }
        ]
      }
    ');

    // Check if it worked
    if ($encoding_job) {
      // Success
      echo "w00t! \n\n";
      echo "Job ID: ".$encoding_job->id."\n";
      echo "Output '".$encoding_job->outputs[0]->label."' ID: ".$encoding_job->outputs[0]->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 = $zencoder->jobs->create(array(
      "input" => "s3://bucket-name/file-name.avi",
      "outputs" => array(
        array(
          "label" => "web"
        )
      )
    ));


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 2.0 - 2011-12-02    Complete refactoring of library
    Version 1.6 - 2011-10-24    Fixed issue with user agents in cURL
    Version 1.4 - 2011-10-06    Fixed error with adding api_key to URL
    Version 1.3 - 2011-09-21    Fixed bundled SSL certification chain and made catch_and_parse() static
    Version 1.2 - 2011-08-06    Added fixes for PHP Notices and SSL handling
    Version 1.1 - 2010-06-04    Added General API Requests
    Version 1.0 - 2010-04-02    Jobs and Notifications.

About

Zencoder integration library for PHP.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 10

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.