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

ApsaraVideo Media Processing:スナップショットのキャプチャ

最終更新日:Jan 12, 2025

ビデオ スナップショット機能を使用すると、ビデオの特定の時点において特定のサイズの スナップショット をキャプチャできます。 スナップショット は、ビデオ サムネイル、スプライト、プログレスバー サムネイルなどのシナリオで使用されます。 スナップショット をキャプチャする時点、2 つの連続する スナップショット 間の間隔、キャプチャする スナップショット の数、キャプチャする スナップショット の種類、および複数の スナップショット を 1 つの画像スプライトに合成するかどうかを指定できます。 スナップショット ジョブは、ApsaraVideo Media Processing(MPS)コンソール、API、または SDK を使用して送信できます。このトピックでは、MPS SDK for PHP を使用して スナップショット ジョブを送信およびクエリするサンプルコードを示します。

前提条件

MPS SDK for PHP がインストールおよび設定されていること。 詳細については、MPS SDK for PHP をご参照ください。 SDK の詳細と、SDK を使用して API オペレーションを呼び出す方法の例については、OpenAPI Explorer をご覧ください。

スナップショット ジョブの送信

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

<?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\SubmitSnapshotJobRequest;


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_{Count}.jpg";

    /**
     * @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 SubmitSnapshotJobRequest([
            "input" => json_encode(array(
                'Location' => $sample->ossLocation,
                'Bucket' => $sample->bucket,
                'Object' => urlencode($sample->oss_input_object))
            ),
            "snapshotConfig" => $sample->snapshotConfig(),
            "pipelineId" => $sample->pipelineId,
        ]);
        $response = $client->submitSnapshotJob($request);
        Console::log(Utils::toJSONString(Tea::merge($response->body)));
    }


    function snapshotConfig() {
        $outputfile = array(
            'Location' => $this->ossLocation,
            'Bucket' => $this->bucket,
            'Object' => urlencode($this->oss_output_object));
        $snapshotConfig['OutputFile'] = $outputfile;
        $snapshotConfig['Time'] = 2;
        $snapshotConfig['Num'] = 10;
        $snapshotConfig['Interval'] = 20;
        return json_encode($snapshotConfig);
    }

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

1 つ以上の スナップショット ジョブのクエリ

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

<?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\QuerySnapshotJobListRequest;


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 QuerySnapshotJobListRequest([
            "snapshotJobIds" => "72dfa5e67974c736******"
        ]);
        $response = $client->querySnapshotJobList($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();

参照