すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Media Processing:メディアファイルのトランスコード

最終更新日:Jan 12, 2025

トランスコードとは、オーディオファイルまたはビデオファイルを、さまざまなネットワーク帯域幅、端末デバイス、およびユーザーニーズに適応するように、1 つ以上のオーディオファイルまたはビデオファイルに変換することです。ApsaraVideo Media Processing(MPS)コンソールで作成されたトランスコードジョブとワークフローがビジネス要件を満たしていない場合は、SubmitJobs オペレーションを呼び出してトランスコードジョブを送信できます。このトピックでは、PHP 用 MPS SDK にカプセル化されている API オペレーションを呼び出してメディアファイルをトランスコードする例を示します。

前提条件

PHP 用 MPS SDK がインストールおよび構成されていること。詳細については、PHP 用 MPS SDK をご参照ください。SDK の詳細と、SDK を使用して API オペレーションを呼び出す方法の例については、OpenAPI エクスプローラー にアクセスしてください。

トランスコードジョブの送信

SubmitJobs オペレーションを呼び出して、トランスコードジョブを送信できます。リクエストパラメーターとレスポンスパラメーターの詳細については、SubmitJobs をご参照ください。リクエスト例:

<?php
namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Mts\V20140618\Mts;
use AlibabaCloud\Darabonba\Env\Env;
use AlibabaCloud\Tea\Tea;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Console\Console;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Mts\V20140618\Models\SubmitJobsRequest;


class Sample {

    private $pipelineId = "<PipelineId>";
    private $templateId = "S00000001-100020"; // トランスコードテンプレートの ID。ビジネス要件に基づいてテンプレートを選択します。
    private $ossLocation = "<OssLocation>";
    private $bucket = "<bucket name>";
    private $oss_input_object  = "input.mp4"; 
    private $oss_output_object  = "output.mp4";


    /**
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @param string $regionId
     * @return Mts
     * 本番環境では、protocol パラメーターを HTTPS に設定することをお勧めします。
     */
    public static function createClient($accessKeyId, $accessKeySecret, $regionId){
        $config = new Config([]);
        $config->accessKeyId = $accessKeyId;
        $config->accessKeySecret = $accessKeySecret;
        $config->regionId = $regionId;
        $config->protocol = "HTTP";
        return new Mts($config);
    }

    /**
     * @return void
     */
    public static function main(){
        $sample = new Sample;
        $client = self::createClient(Env::getEnv("ALIBABA_CLOUD_ACCESS_KEY_ID"), Env::getEnv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), 'cn-shanghai');
        $request = new SubmitJobsRequest([
            "input" => json_encode(array(
                'Location' => $sample->ossLocation,
                'Bucket' => $sample->bucket,
                'Object' => urlencode($sample->oss_input_object))
            ),
            "outputBucket" => $sample->bucket,
            "outputLocation" => $sample->ossLocation,
            "pipelineId" => $sample->pipelineId,
            "outputs" => $sample->outputs(),
        ]);
        $response = $client->submitJobs($request);
        Console::log(Utils::toJSONString(Tea::merge($response->body)));
    }

    function outputs() {
        $output = array('OutputObject' => urlencode($this->oss_output_object));
        $output['TemplateId'] = $this->templateId;
        $outputs = array($output);
        return json_encode($outputs);
    }

}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main();

1 つ以上のトランスコードジョブをクエリする

QueryJobList オペレーションを呼び出して、1 つ以上のトランスコードジョブをクエリできます。リクエストパラメーターとレスポンスパラメーターの詳細については、QueryJobList をご参照ください。リクエスト例:

<?php
namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Mts\V20140618\Mts;
use AlibabaCloud\Darabonba\Env\Env;
use AlibabaCloud\Tea\Tea;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Console\Console;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Mts\V20140618\Models\QueryJobListRequest;


class Sample {

    /**
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @param string $regionId
     * @return Mts
     * 本番環境では、protocol パラメーターを HTTPS に設定することをお勧めします。
     */
    public static function createClient($accessKeyId, $accessKeySecret, $regionId){
        $config = new Config([]);
        $config->accessKeyId = $accessKeyId;
        $config->accessKeySecret = $accessKeySecret;
        $config->regionId = $regionId;
        $config->protocol = "HTTP";
        return new Mts($config);
    }

    /**
     * @return void
     */
    public static function main(){
        $sample = new Sample;
        $client = self::createClient(Env::getEnv("ALIBABA_CLOUD_ACCESS_KEY_ID"), Env::getEnv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), 'cn-shanghai');
        $request = new QueryJobListRequest([
            "jobIds" => "bb558c1cc5be44d19****,d1ce193f50f1fcd****"
        ]);
        $response = $client->queryJobList($request);
        Console::log(Utils::toJSONString(Tea::merge($response->body)));
    }

}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main();

すべてのトランスコードジョブをクエリする

ListJob オペレーションを呼び出して、すべてのトランスコードジョブをクエリできます。リクエストパラメーターとレスポンスパラメーターの詳細については、ListJob をご参照ください。リクエスト例:

<?php
namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Mts\V20140618\Mts;
use AlibabaCloud\Darabonba\Env\Env;
use AlibabaCloud\Tea\Tea;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Console\Console;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Mts\V20140618\Models\ListJobRequest;


class Sample {

    /**
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @param string $regionId
     * @return Mts
     * 本番環境では、protocol パラメーターを HTTPS に設定することをお勧めします。
     */
    public static function createClient($accessKeyId, $accessKeySecret, $regionId){
        $config = new Config([]);
        $config->accessKeyId = $accessKeyId;
        $config->accessKeySecret = $accessKeySecret;
        $config->regionId = $regionId;
        $config->protocol = "HTTP";
        return new Mts($config);
    }

    /**
     * @return void
     */
    public static function main(){
        $sample = new Sample;
        $client = self::createClient(Env::getEnv("ALIBABA_CLOUD_ACCESS_KEY_ID"), Env::getEnv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), 'cn-shanghai');
        $request = new ListJobRequest([
            "state" => "All",
            "pipelineId" => "88c6ca185b665e2a12*****"
        ]);
        $response = $client->listJob($request);
        Console::log(Utils::toJSONString(Tea::merge($response->body)));
    }

}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main();

トランスコードジョブのキャンセル

CancelJob オペレーションを呼び出して、トランスコードジョブをキャンセルできます。リクエストパラメーターとレスポンスパラメーターの詳細については、CancelJob をご参照ください。リクエスト例:

<?php
namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Mts\V20140618\Mts;
use AlibabaCloud\Darabonba\Env\Env;
use AlibabaCloud\Tea\Tea;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Console\Console;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Mts\V20140618\Models\CancelJobRequest;


class Sample {

    /**
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @param string $regionId
     * @return Mts
     * 本番環境では、protocol パラメーターを HTTPS に設定することをお勧めします。
     */
    public static function createClient($accessKeyId, $accessKeySecret, $regionId){
        $config = new Config([]);
        $config->accessKeyId = $accessKeyId;
        $config->accessKeySecret = $accessKeySecret;
        $config->regionId = $regionId;
        $config->protocol = "HTTP";
        return new Mts($config);
    }

    /**
     * @return void
     */
    public static function main(){
        $sample = new Sample;
        $client = self::createClient(Env::getEnv("ALIBABA_CLOUD_ACCESS_KEY_ID"), Env::getEnv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), 'cn-shanghai');
        $request = new CancelJobRequest([
            "jobId" => "d1ce4d49419193f50f1fcd*****"
        ]);
        $response = $client->cancelJob($request);
        Console::log(Utils::toJSONString(Tea::merge($response->body)));
    }

}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main();

参照