通过阅读本文,您可以了解通过服务端SDK调用OpenAPI发起并查询智能媒体服务转码任务的示例代码。

使用说明

发起转码任务时,需要先根据用户所提供的region(提供服务的区域)、name(转码任务名称)、inputPath(转码任务的输入OSS路径)、outputpath(转码任务的输出OSS路径)和templateId(转码模板ID)参数提交转码任务。转码任务处理成功后,可以根据返回的jobId(任务ID)查询该转码任务信息。

转码任务参数需注意以下几点:
  • region目前仅支持服务地域中的区域。
  • name可以为空。
  • inputPathoutputpath必须和region在同一区域。
  • templateId可通过转码模板管理页面获取。

示例代码

您可以通过阿里云OpenAPI开发者门户在线调试。

<?php

require_once '../vendor/autoload.php';

use AlibabaCloud\SDK\ICE\V20201109\ICE;
use AlibabaCloud\SDK\ICE\V20201109\Models;
use AlibabaCloud\SDK\ICE\V20201109\Models\GetTranscodeJobRequest;
use AlibabaCloud\SDK\ICE\V20201109\Models\SubmitTranscodeJobRequest;
use AlibabaCloud\SDK\ICE\V20201109\Models\SubmitTranscodeJobRequest\outputGroup\processConfig\transcode;
use AlibabaCloud\SDK\ICE\V20201109\Models\SubmitTranscodeJobRequest\outputGroup\processConfig;
use AlibabaCloud\SDK\ICE\V20201109\Models\SubmitTranscodeJobRequest\outputGroup\output;
use AlibabaCloud\SDK\ICE\V20201109\Models\SubmitTranscodeJobRequest\outputGroup;
use AlibabaCloud\SDK\ICE\V20201109\Models\SubmitTranscodeJobRequest\inputGroup;
use Darabonba\OpenApi\Models\Config;

try {

    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 本示例以将AccessKey ID和 AccessKey Secret保存在环境变量为例说明。配置方法请参见:https://help.aliyun.com/document_detail/311677.html
    $credential = new Credential([]);
    $config = new Config([
     'credential' => $credential,
     'endpoint' => 'ice.cn-shanghai.aliyuncs.com'
    ]);
    // 如需硬编码AccessKey ID和AccessKey Secret,代码如下,但强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    // $config->accessKeyId = '<yourAccessKeyId>';
    // $config->accessKeySecret = '<yourAccessKeySecret>';
    $client = new ICE($config);

    // 构造提交任务请求
    $inputGroup = new inputGroup(["Type" => "OSS","Media" => "oss://bucket/path/to/input_video.mp4"]);
    $outputGroupOutput = new output(["Type" => "OSS","Media" => "oss://bucket/path/to/output_video.mp4"]);
    $outputGroupProcessConfigTranscode = new transcode(["TemplateId" => "9547c6ad97cb4f2aaa29683ebd18****"]);
    $outputGroupProcessConfig = new processConfig(["Transcode" => $outputGroupProcessConfigTranscode]);
    $outputGroup = new outputGroup(["Output" => $outputGroupOutput,"ProcessConfig" => $outputGroupProcessConfig]);

    // 发送请求
    $request = new SubmitTranscodeJobRequest();
    $request->inputGroup = [$inputGroup];
    $request->outputGroup = [$outputGroup];
    $response = $client->submitTranscodeJob($request);
    echo json_encode($response->body);

    // 提取任务ID,并构造查询任务请求
    $jobId = $response->body->transcodeParentJob->parentJobId;
    $request = new GetTranscodeJobRequest();
    $request->jobId = $jobId;
    // 发送查询任务情况请求
    $response = $client->getTranscodeJob($request);
    echo json_encode($response->body);

} catch (TeaUnableRetryError $e) {
    var_dump($e);
}

相关接口