全部产品
Search
文档中心

Object Storage Service:Pemrosesan Asinkron (PHP SDK V2)

更新时间:Nov 09, 2025

Pemrosesan asinkron (x-oss-async-process) memungkinkan program menjalankan tugas lain tanpa menunggu penyelesaian tugas saat ini. Topik ini menjelaskan cara menggunakan PHP SDK V2 untuk pemrosesan asinkron dalam skenario seperti konversi dokumen, transkoding video, dan penggabungan video.

Perhatian

  • Kode contoh dalam topik ini menggunakan ID Wilayah China (Hangzhou) cn-hangzhou dan titik akhir publik secara default. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara Wilayah OSS dan titik akhir, lihat Wilayah dan Titik Akhir.

Kode Contoh

Berikut adalah kode contoh yang menunjukkan cara mengonversi dokumen ke format tertentu.

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Parameter ini menentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint bersifat opsional. Parameter ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, tetapkan endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Tentukan gaya pemrosesan video untuk mengonversi video ke format yang ditentukan.
$style = "video/convert,f_avi,vcodec_h265,s_1920x1080,vb_2000000,fps_30,acodec_aac,ab_100000,sn_1";

// Bangun instruksi pemrosesan asinkron yang mencakup nama bucket dan nama objek yang dienkripsi Base64.
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s",
    $style,
    rtrim(base64_encode($bucket), '='), // Enkode Base64 nama bucket dan hapus tanda sama dengan (=) di akhir.
    rtrim(base64_encode($key), '=')     // Enkode Base64 nama objek dan hapus tanda sama dengan (=) di akhir.
);

// Buat objek permintaan untuk pemrosesan objek asinkron.
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucket, // Nama bucket.
    key: $key         // Nama objek.
);

// Tetapkan instruksi pemrosesan.
$request->process = $process;

// Panggil metode asyncProcessObject untuk memproses objek secara asinkron.
$result = $client->asyncProcessObject($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik permintaan.
    'hasil pemrosesan asinkron:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan asinkron.
);

Skenario

Transkoding Video

Gunakan fitur Transkoding Video untuk mengubah format encoding video, mengurangi ukuran file dengan menurunkan resolusi dan bitrate, serta mengonversi format kontainer video.

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Parameter ini menentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint bersifat opsional. Parameter ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, tetapkan endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Tentukan nama video yang telah dikonversi.
$targetObject = "dest.avi";

// Tentukan gaya pemrosesan, termasuk parameter seperti format, kodek video, resolusi, bitrate, laju frame, kodek audio, dan bitrate audio.
$style = "video/convert,f_avi,vcodec_h265,s_1920x1080,vb_2000000,fps_30,acodec_aac,ab_100000,sn_1";

// Bangun instruksi pemrosesan asinkron yang mencakup gaya pemrosesan dan lokasi penyimpanan file yang diproses (nama bucket dan objek dienkripsi Base64).
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s",
    $style,
    rtrim(base64_encode($bucketName), '='), // Enkode Base64 nama bucket dan hapus tanda sama dengan (=) di akhir.
    rtrim(base64_encode($targetObject), '=') // Enkode Base64 nama objek dan hapus tanda sama dengan (=) di akhir.
);

// Buat objek permintaan untuk pemrosesan objek asinkron.
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName, // Nama bucket.
    key: $objectName,    // Nama objek.
    asyncProcess: $process // Instruksi pemrosesan asinkron.
);

// Panggil metode asyncProcessObject untuk memproses objek secara asinkron.
$result = $client->asyncProcessObject($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik permintaan.
    'hasil pemrosesan asinkron:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan asinkron.
);

Konversi Video ke Gambar Animasi

Gunakan fitur Konversi Video ke Gambar Animasi untuk mengonversi video menjadi gambar animasi dalam format seperti GIF atau WebP.

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Parameter ini menentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint bersifat opsional. Parameter ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, tetapkan endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Tentukan nama file GIF animasi yang diproses.
$targetKey = "destexample.gif";

// Tentukan parameter untuk mengonversi video menjadi GIF animasi, termasuk lebar, tinggi, dan interval frame GIF.
$animationStyle = "video/animation,f_gif,w_100,h_100,inter_1000";

// Bangun instruksi pemrosesan asinkron yang mencakup jalur penyimpanan dan nama bucket serta nama file target yang dienkripsi Base64.
$bucketNameEncoded = base64_encode($bucketName); // Enkode Base64 nama bucket.
$targetKeyEncoded = base64_encode($targetKey);   // Enkode Base64 nama file target.
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $animationStyle,
    $bucketNameEncoded,
    $targetKeyEncoded
);

// Buat objek permintaan untuk pemrosesan objek asinkron.
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // Nama bucket.
    key: $objectName,         // Nama objek.
    asyncProcess: $process    // Instruksi pemrosesan asinkron.
);

// Panggil metode asyncProcessObject untuk memproses objek secara asinkron.
$result = $client->asyncProcessObject($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik permintaan.
    'hasil pemrosesan asinkron:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan asinkron.
);

Konversi Video ke Sprite

Gunakan fitur Konversi Video ke Sprite untuk mengekstraksi frame video dan menggabungkannya menjadi sprite berdasarkan aturan tertentu.

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Parameter ini menentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint bersifat opsional. Parameter ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, tetapkan endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Tentukan nama file sprite keluaran.
$targetKey = "example.jpg";

// Bangun parameter untuk mengonversi video menjadi sprite, termasuk format, lebar, tinggi, dan interval frame.
$animationStyle = "video/sprite,f_jpg,sw_100,sh_100,inter_10000,tw_10,th_10,pad_0,margin_0";

// Bangun instruksi pemrosesan asinkron yang mencakup jalur penyimpanan dan nama bucket serta nama file target yang dienkripsi Base64.
$bucketNameEncoded = base64_encode($bucketName); // Enkode Base64 nama bucket.
$targetKeyEncoded = base64_encode($targetKey);   // Enkode Base64 nama file target.
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $animationStyle,
    $bucketNameEncoded,
    $targetKeyEncoded
);

// Buat objek permintaan untuk pemrosesan objek asinkron.
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // Nama bucket.
    key: $objectName,         // Nama objek.
    asyncProcess: $process    // Instruksi pemrosesan asinkron.
);

// Panggil metode asyncProcessObject untuk memproses objek secara asinkron.
$result = $client->asyncProcessObject($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik permintaan.
    'hasil pemrosesan asinkron:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan asinkron.
);

Tangkapan Video

Gunakan fitur Tangkapan Video untuk mengekstraksi frame video berdasarkan aturan tertentu dan mengonversinya ke format gambar yang diperlukan.

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Parameter ini menentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint bersifat opsional. Parameter ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, tetapkan endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Tentukan nama file yang diproses oleh tangkapan video.
$targetKey = "dest.png";

// Bangun parameter tangkapan video, termasuk format, lebar, tinggi, metode pemotongan, dan interval frame.
$animationStyle = "video/snapshots,f_jpg,w_100,h_100,scaletype_crop,inter_10000";

// Bangun instruksi pemrosesan asinkron yang mencakup jalur penyimpanan dan nama bucket serta nama file target yang dienkripsi Base64.
$bucketNameEncoded = base64_encode($bucketName); // Enkode Base64 nama bucket.
$targetKeyEncoded = base64_encode($targetKey);   // Enkode Base64 nama file target.
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $animationStyle,
    $bucketNameEncoded,
    $targetKeyEncoded
);

// Buat objek permintaan untuk pemrosesan objek asinkron.
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // Nama bucket.
    key: $objectName,         // Nama objek.
    asyncProcess: $process    // Instruksi pemrosesan asinkron.
);

// Panggil metode asyncProcessObject untuk memproses objek secara asinkron.
$result = $client->asyncProcessObject($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik permintaan.
    'hasil pemrosesan asinkron:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan asinkron.
);

Penggabungan Video

Gunakan fitur Penggabungan Video untuk menggabungkan beberapa video menjadi satu video dan mengonversinya ke format yang diperlukan.

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Parameter ini menentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint bersifat opsional. Parameter ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, tetapkan endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Masukkan nama file video gabungan.
$targetObject = "dest.mp4";

// Tentukan nama file video yang akan digabungkan.
$video1 = "concat1.mp4";
$video2 = "concat2.mp4";

// Bangun string gaya untuk pemrosesan video dan parameter penggabungan video.
$style = sprintf(
    "video/concat,ss_0,f_mp4,vcodec_h264,fps_25,vb_1000000,acodec_aac,ab_96000,ar_48000,ac_2,align_1/pre,o_%s/sur,o_%s,t_0",
    rtrim(base64_encode($video1), '='), // Enkode Base64 nama file video pertama dan hapus tanda sama dengan (=) di akhir.
    rtrim(base64_encode($video2), '=')  // Enkode Base64 nama file video kedua dan hapus tanda sama dengan (=) di akhir.
);

// Bangun instruksi pemrosesan asinkron.
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $style,
    rtrim(base64_encode($bucketName), '='),   // Enkode Base64 nama bucket dan hapus tanda sama dengan (=) di akhir.
    rtrim(base64_encode($targetObject), '=')  // Enkode Base64 nama file target dan hapus tanda sama dengan (=) di akhir.
);

// Panggil metode asyncProcessObject untuk memproses objek secara asinkron.
$result = $client->asyncProcessObject($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik permintaan.
    'hasil pemrosesan asinkron:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan asinkron.
);

Transkoding Audio

Gunakan fitur Transkoding Audio untuk mengonversi file audio ke format yang diperlukan.

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Parameter ini menentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint bersifat opsional. Parameter ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, tetapkan endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Tentukan nama file audio yang telah dikonversi.
$targetKey = "dest.aac";

// Bangun string gaya untuk pemrosesan audio dan parameter transkoding audio.
$animationStyle = "audio/convert,ss_10000,t_60000,f_aac,ab_96000";

// Bangun instruksi pemrosesan asinkron yang mencakup jalur penyimpanan dan nama bucket serta nama file target yang dienkripsi Base64.
$bucketNameEncoded = base64_encode($bucketName); // Enkode Base64 nama bucket.
$targetKeyEncoded = base64_encode($targetKey);   // Enkode Base64 nama file target.
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $animationStyle,
    $bucketNameEncoded,
    $targetKeyEncoded
);

// Buat objek permintaan untuk pemrosesan objek asinkron.
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // Nama bucket.
    key: $objectName,         // Nama objek.
    asyncProcess: $process    // Instruksi pemrosesan asinkron.
);

// Panggil metode asyncProcessObject untuk memproses objek secara asinkron.
$result = $client->asyncProcessObject($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik permintaan.
    'hasil pemrosesan asinkron:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan asinkron.
);

Penggabungan Audio

Gunakan fitur Penggabungan Audio untuk menggabungkan beberapa file audio menjadi satu file audio dan mengonversinya ke format yang diperlukan.

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Parameter ini menentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint bersifat opsional. Parameter ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, tetapkan endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan variabel global.
$region = ''; // Wilayah penyimpanan.
$bucketName = ''; // Nama bucket.

// Uraikan argumen baris perintah.
$options = getopt('', ['region:', 'bucket:']);

// Periksa apakah wilayah penyimpanan kosong.
if (empty($options['region'])) {
    echo "Error: parameter tidak valid, wilayah diperlukan\n";
    exit(1);
}

// Periksa apakah nama bucket kosong.
if (empty($options['bucket'])) {
    echo "Error: parameter tidak valid, nama bucket diperlukan\n";
    exit(1);
}

// Dapatkan nilai argumen baris perintah.
$region = $options['region'];
$bucketName = $options['bucket'];

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Nama file audio yang akan digabungkan.
$audio1 = "src1.mp3";
$audio2 = "src2.mp3";

// Tentukan nama file audio gabungan.
$targetAudio = "dest.aac";

// Bangun string gaya untuk pemrosesan audio dan parameter penggabungan audio.
$audio1Encoded = base64_encode($audio1); // Enkode Base64 nama file audio pertama.
$audio2Encoded = base64_encode($audio2); // Enkode Base64 nama file audio kedua.
$style = sprintf(
    "audio/concat,f_aac,ac_1,ar_44100,ab_96000,align_2/pre,o_%s/pre,o_%s,t_0",
    $audio1Encoded,
    $audio2Encoded
);

// Bangun instruksi pemrosesan asinkron yang mencakup jalur penyimpanan dan nama bucket serta nama file target yang dienkripsi Base64.
$bucketEncoded = base64_encode($bucketName); // Enkode Base64 nama bucket.
$targetEncoded = base64_encode($targetAudio); // Enkode Base64 nama file target.
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $style,
    $bucketEncoded,
    $targetEncoded
);

// Buat objek permintaan untuk pemrosesan objek asinkron.
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // Nama bucket.
    asyncProcess: $process    // Instruksi pemrosesan asinkron.
);

// Panggil metode asyncProcessObject untuk memproses objek secara asinkron.
$result = $client->asyncProcessObject($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik permintaan.
    'hasil pemrosesan asinkron:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan asinkron.
);

Menguraikan Watermark Buta pada Gambar

Berikut adalah kode contoh yang menunjukkan cara menguraikan watermark buta dalam gambar.

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah diperlukan. Parameter ini menentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint bersifat opsional. Parameter ini menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa argumen yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, tetapkan endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan variabel global.
$region = ''; // Wilayah penyimpanan.
$bucketName = ''; // Nama bucket.

// Uraikan argumen baris perintah.
$options = getopt('', ['region:', 'bucket:']);

// Periksa apakah wilayah penyimpanan kosong.
if (empty($options['region'])) {
    echo "Error: parameter tidak valid, wilayah diperlukan\n";
    exit(1);
}

// Periksa apakah nama bucket kosong.
if (empty($options['bucket'])) {
    echo "Error: parameter tidak valid, nama bucket diperlukan\n";
    exit(1);
}

// Dapatkan nilai argumen baris perintah.
$region = $options['region'];
$bucketName = $options['bucket'];

// Gunakan variabel lingkungan untuk memuat kredensial, yaitu ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Tentukan nama file gambar dengan watermark.
$sourceKey = $objectName; // Tentukan nama objek gambar yang akan diproses.

// Tentukan topik pesan MNS.
$topic = "imm-blindwatermark-test";

// Ekstrak konten watermark dari gambar yang ditentukan.
$style = "image/deblindwatermark,s_low,t_text";
$encodedTopic = rtrim(base64_encode($topic), '='); // Enkode Base64 dan hapus tanda sama dengan (=) di akhir.
$process = sprintf(
    "%s|sys/notify,topic_%s",
    $style,
    $encodedTopic
);

// Buat objek permintaan untuk pemrosesan objek asinkron.
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // Nama bucket.
    key: $sourceKey,          // Tentukan nama gambar yang akan diproses.
    asyncProcess: $process    // Instruksi pemrosesan asinkron.
);

// Panggil metode asyncProcessObject untuk memproses objek secara asinkron.
$result = $client->asyncProcessObject($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik permintaan.
    'hasil pemrosesan asinkron:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan asinkron.
);

Referensi