Todos os produtos
Search
Central de documentação

ApsaraVideo Media Processing:Captura de snapshots

Última atualização: Sep 22, 2026

Snapshots de vídeo capturam quadros de um tamanho específico em momentos determinados, sendo úteis como miniaturas de vídeo, sprites ou miniaturas de barra de progresso. Ao enviar um job de snapshot, é possível especificar o tempo de captura, o intervalo, a quantidade, o tipo de snapshot e a composição de um sprite de imagem. Esses jobs podem ser enviados no console do ApsaraVideo Media Processing (MPS) ou por meio da API e de SDKs. Este tópico apresenta códigos de exemplo do SDK para PHP para envio e consulta de jobs de snapshot no ApsaraVideo Media Processing (MPS).

Pré-requisitos

Instale e configure o SDK do MPS para PHP. Para mais informações, consulte MPS SDK for PHP. Para obter mais detalhes sobre o SDK e visualizar exemplos de como usá-lo para chamar operações da API, acesse o OpenAPI Explorer.

Envie um job de snapshot

Chame a operação SubmitSnapshotJob para enviar um job de snapshot. Para mais informações sobre os parâmetros de requisição e resposta, consulte 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"; # The ID of the transcoding template. Select a template based on your business requirements.
    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
     * We recommend that you set the protocol parameter to HTTPS in a production environment.
     */
    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();

Consulte um ou mais jobs de snapshot

Chame a operação QuerySnapshotJobList para consultar um ou mais jobs de snapshot. Para mais informações sobre os parâmetros de requisição e resposta, consulte 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
     * We recommend that you set the protocol parameter to HTTPS in a production environment.
     */
    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();

Referências