本文提供了PHP SDK转码的操作步骤及完整的代码示例。

转码相关API调用及参数详细信息请参见提交转码作业

  1. 创建AcsClient实例。
    $clientProfile = DefaultProfile::getProfile(
    $mps_region_id,                   # 您的 Region ID
    $access_key_id,                   # 您的 AccessKey ID
    $access_key_secret                # 您的 AccessKey Secret
    );
    $client = new DefaultAcsClient($clientProfile);
  2. 创建request,并设置参数。
    $request = new Mts\SubmitJobsRequest();
    $request->setAcceptFormat('JSON');
  3. 转码参数。
    说明
    • 通过SDK提交转码作业时Object需经URLEncode,否则会导致转码失败。更多信息,请参见URL Encoding说明
    • 请按照规范填写文件名称,否则会找不到文件导致转码失败。详细名称规范,请参见参数详情
    • Input
      $input = array('Location' => $oss_location,
                      'Bucket' => $oss_bucket,
                      'Object' => urlencode($oss_input_object));
      $request->setInput(json_encode($input));
    • Output
      $output = array('OutputObject' => urlencode($oss_output_object));
      • Container
        $output['Container'] = array('Format' => 'mp4');
      • Video
        说明 如果使用转码模板进行转码则无需配置此参数。如果配置此参数,则覆盖指定转码模板中的对应参数。
        $output['Video'] = array('Codec' =>'H.264',
                                    'Bitrate' => 1500,
                                    'Width' => 1280,
                                    'Fps' => 25);
      • Audio
        说明 如果使用转码模板进行转码则无需配置此参数。如果配置此参数,则覆盖指定转码模板中的对应参数。
        $output['Audio'] = array('Codec' => 'AAC',
                                    'Bitrate' => 128,
                                    'Channels' => 2,
                                    'Samplerate' => 44100);
      • TemplateId
        $output['TemplateId'] = $template_id;
    • PipelineId
      $request->setPipelineId($pipeline_id);
  4. 发起API请求并显示返回值。
    $response = $client->getAcsResponse($request);
    print 'RequestId is:' . $response->{'RequestId'} . "\n";;
    if ($response->{'JobResultList'}->{'JobResult'}[0]->{'Success'}) {
    print 'JobId is:' .
          $response->{'JobResultList'}->{'JobResult'}[0]->{'Job'}->{'JobId'} . "\n";
    } else {
    print 'SubmitJobs Failed code:' .
          $response->{'JobResultList'}->{'JobResult'}[0]->{'Code'} .
          ' message:' .
          $response->{'JobResultList'}->{'JobResult'}[0]->{'Message'} . "\n";
    }
完整代码
<?php
include_once 'aliyun-openapi-php-sdk/aliyun-php-sdk-core/Config.php';
use Mts\Request\V20140618 as Mts;
$access_key_id = 'xxx';
$access_key_secret = 'xxx';
$mps_region_id = 'cn-hangzhou';
$pipeline_id = 'xxx';                 # 管道ID
$template_id = 'S00000001-200010';    # 转码模板ID
$oss_location = 'oss-cn-hangzhou';
$oss_bucket = 'xxx';
$oss_input_object = 'input.mp4';      #OSS储存文件输入路径
$oss_output_object = 'output.mp4';    #OSS储存文件输出路径
# 创建DefaultAcsClient实例并初始化
$clientProfile = DefaultProfile::getProfile(
    $mps_region_id,                   # 您的 Region ID
    $access_key_id,                   # 您的 AccessKey ID
    $access_key_secret                # 您的 AccessKey Secret
);
$client = new DefaultAcsClient($clientProfile);
# 创建API请求并设置参数
$request = new Mts\SubmitJobsRequest();
$request->setAcceptFormat('JSON');
# Input
$input = array('Location' => $oss_location,
               'Bucket' => $oss_bucket,
               'Object' => urlencode($oss_input_object));
$request->setInput(json_encode($input));
# Output
$output = array('OutputObject' => urlencode($oss_output_object));
# Ouput->Container
$output['Container'] = array('Format' => 'mp4');
# Ouput->Video
$output['Video'] = array('Codec' =>'H.264',
                         'Bitrate' => 1500,
                         'Width' => 1280,
                         'Fps' => 25);
# Ouput->Audio
$output['Audio'] = array('Codec' => 'AAC',
                         'Bitrate' => 128,
                         'Channels' => 2,
                         'Samplerate' => 44100);
# Ouput->TemplateId
$output['TemplateId'] = $template_id;
$outputs = array($output);
$request->setOUtputs(json_encode($outputs));
$request->setOutputBucket($oss_bucket);
$request->setOutputLocation($oss_location);
# PipelineId
$request->setPipelineId($pipeline_id);
# 发起请求并处理返回
try {
    $response = $client->getAcsResponse($request);
    print 'RequestId is:' . $response->{'RequestId'} . "\n";;
    if ($response->{'JobResultList'}->{'JobResult'}[0]->{'Success'}) {
        print 'JobId is:' .
               $response->{'JobResultList'}->{'JobResult'}[0]->{'Job'}->{'JobId'} . "\n";
    } else {
        print 'SubmitJobs Failed code:' .
               $response->{'JobResultList'}->{'JobResult'}[0]->{'Code'} .
               ' message:' .
               $response->{'JobResultList'}->{'JobResult'}[0]->{'Message'} . "\n";
    }
} catch(ServerException $e) {
    print 'Error: ' . $e->getErrorCode() . ' Message: ' . $e->getMessage() . "\n";
} catch(ClientException $e) {
    print 'Error: ' . $e->getErrorCode() . ' Message: ' . $e->getMessage() . "\n";
}