Anda dapat menggunakan fitur snapshot video untuk menangkap snapshot dengan ukuran tertentu pada titik waktu tertentu dalam sebuah video. Snapshot ini digunakan dalam skenario seperti thumbnail video, sprite, dan thumbnail bilah kemajuan. Anda dapat menentukan waktu pengambilan snapshot, interval antara dua snapshot berturut-turut, jumlah snapshot yang akan diambil, jenis snapshot, serta apakah beberapa snapshot akan disusun menjadi satu sprite gambar. Topik ini memberikan contoh cara menggunakan ApsaraVideo Media Processing (MPS) SDK untuk PHP V2.0 untuk menangkap snapshot.
Kode contoh
<?php
namespace AlibabaCloud\SDK\Sample;
use AlibabaCloud\SDK\Mts\V20140618\Mts;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Mts\V20140618\Models\SubmitSnapshotJobRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
class Sample {
/**
* Gunakan ID AccessKey dan Rahasia AccessKey Anda untuk menginisialisasi klien.
* @return Mts Client
*/
public static function createClient(){
$config = new Config([
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi.
"accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
"accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
]);
$config->endpoint = "mts.cn-hangzhou.aliyuncs.com";
return new Mts($config);
}
/**
* @param string[] $args
* @return void
*/
public static function main($args){
$client = self::createClient();
$submitSnapshotJobRequest = new SubmitSnapshotJobRequest([
// Masukan pekerjaan.
"input" => "{\"Bucket\":\"example-bucket\",\"Location\":\"example-location\",\"Object\":\"example%2Ftest.flv\"}",
// Konfigurasi pekerjaan snapshot.
"snapshotConfig" => "{\"OutputFile\":{\"Bucket\":\"example-001\",\"Location\":\"example-location\",\"Object\":\"{Count}.jpg\"},\"Time\":\"5\",\"Num\":\"10\",\"Interval\":\"20\"}",
// Data yang ditentukan pengguna.
"userData" => "testid-001",
// ID antrian MPS.
"pipelineId" => "dd3dae411e704030b921e52698e5****"
]);
$runtime = new RuntimeOptions([]);
try {
// Tulis kode Anda sendiri untuk menampilkan respons dari operasi API jika diperlukan.
$client->submitSnapshotJobWithOptions($submitSnapshotJobRequest, $runtime);
}
catch (Exception $error) {
if (!($error instanceof TeaError)) {
$error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
}
// Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual dan jangan pernah abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan ditampilkan hanya untuk referensi.
// Pesan kesalahan.
var_dump($error->message);
// URL halaman diagnostik kesalahan yang sesuai.
var_dump($error->data["Recommend"]);
Utils::assertAsString($error->message);
}
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
Sample::main(array_slice($argv, 1));