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

Object Storage Service:非同期処理 (PHP SDK V2)

最終更新日:Nov 09, 2025

非同期処理 (x-oss-async-process) を使用すると、プログラムは現在のタスクの完了を待たずに他のタスクを実行できます。このトピックでは、ドキュメント変換、ビデオトランスコーディング、ビデオマージなどのシナリオで PHP SDK V2 を使用して非同期処理を行う方法について説明します。

注意事項

  • このトピックのサンプルコードでは、デフォルトで中国 (杭州) リージョン ID cn-hangzhou とパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS リージョンとエンドポイント間のマッピングの詳細については、「リージョンとエンドポイント」をご参照ください。

サンプルコード

次のサンプルコードは、ドキュメントを特定のフォーマットに変換する方法の例を示しています。

<?php

// autoload ファイルをインポートして、依存関係ライブラリをロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須です。このパラメーターは、バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプションです。このパラメーターは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
    "key" => ['help' => 'The name of the object', 'required' => True], // オブジェクト名は必須です。
];

// コマンドライン引数を解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの後にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須の引数が欠落していることをユーザーにプロンプト表示します。
        exit(1);
    }
}

// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"];       // オブジェクトの名前。

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// ビデオを指定されたフォーマットに変換するためのビデオ処理スタイルを定義します。
$style = "video/convert,f_avi,vcodec_h265,s_1920x1080,vb_2000000,fps_30,acodec_aac,ab_100000,sn_1";

// Base64 でエンコードされたバケット名とオブジェクト名を含む非同期処理命令を構築します。
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s",
    $style,
    rtrim(base64_encode($bucket), '='), // バケット名を Base64 でエンコードし、末尾の等号 (=) を削除します。
    rtrim(base64_encode($key), '=')     // オブジェクト名を Base64 でエンコードし、末尾の等号 (=) を削除します。
);

// 非同期オブジェクト処理のためのリクエストオブジェクトを作成します。
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucket, // バケットの名前。
    key: $key         // オブジェクトの名前。
);

// 処理命令を設定します。
$request->process = $process;

// asyncProcessObject メソッドを呼び出して、オブジェクトを非同期に処理します。
$result = $client->asyncProcessObject($request);

// 返された結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答ステータスコード。
    'request id:' . $result->requestId . PHP_EOL .   // リクエストの一意の ID。
    'async process result:' . var_export($result, true) . PHP_EOL // 非同期処理の結果。
);

シナリオ

ビデオトランスコード

ビデオトランスコーディング機能を使用すると、ビデオのエンコード形式を変更したり、解像度とビットレートを下げてビデオファイルサイズを縮小したり、ビデオのコンテナフォーマットを変換したりできます。

<?php

// autoload ファイルをインポートして、依存関係ライブラリをロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須です。このパラメーターは、バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプションです。このパラメーターは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
    "key" => ['help' => 'The name of the object', 'required' => True], // オブジェクト名は必須です。
];

// コマンドライン引数を解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの後にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須の引数が欠落していることをユーザーにプロンプト表示します。
        exit(1);
    }
}

// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"];       // オブジェクトの名前。

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// トランスコードされたビデオの名前を指定します。
$targetObject = "dest.avi";

// フォーマット、ビデオコーデック、解像度、ビットレート、フレームレート、オーディオコーデック、オーディオビットレートなどのパラメーターを含む処理スタイルを定義します。
$style = "video/convert,f_avi,vcodec_h265,s_1920x1080,vb_2000000,fps_30,acodec_aac,ab_100000,sn_1";

// 処理スタイルと処理済みファイルの保存場所 (バケット名とオブジェクト名は Base64 でエンコード) を含む非同期処理命令を構築します。
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s",
    $style,
    rtrim(base64_encode($bucketName), '='), // バケット名を Base64 でエンコードし、末尾の等号 (=) を削除します。
    rtrim(base64_encode($targetObject), '=') // オブジェクト名を Base64 でエンコードし、末尾の等号 (=) を削除します。
);

// 非同期オブジェクト処理のためのリクエストオブジェクトを作成します。
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName, // バケットの名前。
    key: $objectName,    // オブジェクトの名前。
    asyncProcess: $process // 非同期処理命令。
);

// asyncProcessObject メソッドを呼び出して、オブジェクトを非同期に処理します。
$result = $client->asyncProcessObject($request);

// 返された結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答ステータスコード。
    'request id:' . $result->requestId . PHP_EOL .   // リクエストの一意の ID。
    'async process result:' . var_export($result, true) . PHP_EOL // 非同期処理の結果。
);

ビデオをアニメーション画像に変換する

ビデオからアニメーション画像への変換機能を使用すると、ビデオを GIF や WebP などのフォーマットのアニメーション画像に変換できます。

<?php

// autoload ファイルをインポートして、依存関係ライブラリをロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須です。このパラメーターは、バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプションです。このパラメーターは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
    "key" => ['help' => 'The name of the object', 'required' => True], // オブジェクト名は必須です。
];

// コマンドライン引数を解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの後にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須の引数が欠落していることをユーザーにプロンプト表示します。
        exit(1);
    }
}

// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"];       // オブジェクトの名前。

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// 処理されたアニメーション GIF ファイルの名前を指定します。
$targetKey = "destexample.gif";

// GIF の幅、高さ、フレーム間隔など、ビデオをアニメーション GIF に変換するためのパラメーターを定義します。
$animationStyle = "video/animation,f_gif,w_100,h_100,inter_1000";

// 保存パスと Base64 でエンコードされたバケット名およびターゲットファイル名を含む非同期処理命令を構築します。
$bucketNameEncoded = base64_encode($bucketName); // バケット名を Base64 でエンコードします。
$targetKeyEncoded = base64_encode($targetKey);   // ターゲットファイル名を Base64 でエンコードします。
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $animationStyle,
    $bucketNameEncoded,
    $targetKeyEncoded
);

// 非同期オブジェクト処理のためのリクエストオブジェクトを作成します。
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // バケットの名前。
    key: $objectName,         // オブジェクトの名前。
    asyncProcess: $process    // 非同期処理命令。
);

// asyncProcessObject メソッドを呼び出して、オブジェクトを非同期に処理します。
$result = $client->asyncProcessObject($request);

// 返された結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答ステータスコード。
    'request id:' . $result->requestId . PHP_EOL .   // リクエストの一意の ID。
    'async process result:' . var_export($result, true) . PHP_EOL // 非同期処理の結果。
);

ビデオをスプライトに変換する

ビデオからスプライトへの変換機能を使用すると、特定のルールに基づいてビデオフレームを抽出し、それらをスプライトに結合できます。

<?php

// autoload ファイルをインポートして、依存関係ライブラリをロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須です。このパラメーターは、バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプションです。このパラメーターは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
    "key" => ['help' => 'The name of the object', 'required' => True], // オブジェクト名は必須です。
];

// コマンドライン引数を解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの後にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須の引数が欠落していることをユーザーにプロンプト表示します。
        exit(1);
    }
}

// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"];       // オブジェクトの名前。

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// 出力スプライトファイルの名前を指定します。
$targetKey = "example.jpg";

// フォーマット、幅、高さ、フレーム間隔など、ビデオをスプライトに変換するためのパラメーターを構築します。
$animationStyle = "video/sprite,f_jpg,sw_100,sh_100,inter_10000,tw_10,th_10,pad_0,margin_0";

// 保存パスと Base64 でエンコードされたバケット名およびターゲットファイル名を含む非同期処理命令を構築します。
$bucketNameEncoded = base64_encode($bucketName); // バケット名を Base64 でエンコードします。
$targetKeyEncoded = base64_encode($targetKey);   // ターゲットファイル名を Base64 でエンコードします。
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $animationStyle,
    $bucketNameEncoded,
    $targetKeyEncoded
);

// 非同期オブジェクト処理のためのリクエストオブジェクトを作成します。
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // バケットの名前。
    key: $objectName,         // オブジェクトの名前。
    asyncProcess: $process    // 非同期処理命令。
);

// asyncProcessObject メソッドを呼び出して、オブジェクトを非同期に処理します。
$result = $client->asyncProcessObject($request);

// 返された結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答ステータスコード。
    'request id:' . $result->requestId . PHP_EOL .   // リクエストの一意の ID。
    'async process result:' . var_export($result, true) . PHP_EOL // 非同期処理の結果。
);

ビデオスナップショット

ビデオスナップショット機能を使用すると、特定のルールに基づいてビデオフレームを抽出し、それらを必要なイメージフォーマットに変換できます。

<?php

// autoload ファイルをインポートして、依存関係ライブラリをロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須です。このパラメーターは、バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプションです。このパラメーターは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
    "key" => ['help' => 'The name of the object', 'required' => True], // オブジェクト名は必須です。
];

// コマンドライン引数を解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの後にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須の引数が欠落していることをユーザーにプロンプト表示します。
        exit(1);
    }
}

// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"];       // オブジェクトの名前。

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// ビデオスナップショットによって処理されるファイルの名前を指定します。
$targetKey = "dest.png";

// フォーマット、幅、高さ、トリミング方法、フレーム間隔など、ビデオスナップショットのパラメーターを構築します。
$animationStyle = "video/snapshots,f_jpg,w_100,h_100,scaletype_crop,inter_10000";

// 保存パスと Base64 でエンコードされたバケット名およびターゲットファイル名を含む非同期処理命令を構築します。
$bucketNameEncoded = base64_encode($bucketName); // バケット名を Base64 でエンコードします。
$targetKeyEncoded = base64_encode($targetKey);   // ターゲットファイル名を Base64 でエンコードします。
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $animationStyle,
    $bucketNameEncoded,
    $targetKeyEncoded
);

// 非同期オブジェクト処理のためのリクエストオブジェクトを作成します。
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // バケットの名前。
    key: $objectName,         // オブジェクトの名前。
    asyncProcess: $process    // 非同期処理命令。
);

// asyncProcessObject メソッドを呼び出して、オブジェクトを非同期に処理します。
$result = $client->asyncProcessObject($request);

// 返された結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答ステータスコード。
    'request id:' . $result->requestId . PHP_EOL .   // リクエストの一意の ID。
    'async process result:' . var_export($result, true) . PHP_EOL // 非同期処理の結果。
);

ビデオマージ

ビデオマージ機能を使用すると、複数のビデオを 1 つのビデオに結合し、必要なフォーマットに変換できます。

<?php

// autoload ファイルをインポートして、依存関係ライブラリをロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須です。このパラメーターは、バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプションです。このパラメーターは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
    "key" => ['help' => 'The name of the object', 'required' => True], // オブジェクト名は必須です。
];

// コマンドライン引数を解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの後にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須の引数が欠落していることをユーザーにプロンプト表示します。
        exit(1);
    }
}

// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"];       // オブジェクトの名前。

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// マージされたビデオファイルの名前を入力します。
$targetObject = "dest.mp4";

// マージするビデオファイルの名前を指定します。
$video1 = "concat1.mp4";
$video2 = "concat2.mp4";

// ビデオ処理用のスタイル文字列とビデオマージパラメーターを構築します。
$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), '='), // 最初のビデオファイルの名前を Base64 でエンコードし、末尾の等号 (=) を削除します。
    rtrim(base64_encode($video2), '=')  // 2 番目のビデオファイルの名前を Base64 でエンコードし、末尾の等号 (=) を削除します。
);

// 非同期処理命令を構築します。
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $style,
    rtrim(base64_encode($bucketName), '='),   // バケット名を Base64 でエンコードし、末尾の等号 (=) を削除します。
    rtrim(base64_encode($targetObject), '=')  // ターゲットファイル名を Base64 でエンコードし、末尾の等号 (=) を削除します。
);

// asyncProcessObject メソッドを呼び出して、オブジェクトを非同期に処理します。
$result = $client->asyncProcessObject($request);

// 返された結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答ステータスコード。
    'request id:' . $result->requestId . PHP_EOL .   // リクエストの一意の ID。
    'async process result:' . var_export($result, true) . PHP_EOL // 非同期処理の結果。
);

オーディオトランスコード

オーディオトランスコーディング機能を使用すると、オーディオファイルを必要なフォーマットに変換できます。

<?php

// autoload ファイルをインポートして、依存関係ライブラリをロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須です。このパラメーターは、バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプションです。このパラメーターは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
    "key" => ['help' => 'The name of the object', 'required' => True], // オブジェクト名は必須です。
];

// コマンドライン引数を解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの後にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須の引数が欠落していることをユーザーにプロンプト表示します。
        exit(1);
    }
}

// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"];       // オブジェクトの名前。

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// トランスコードされたオーディオファイルの名前を指定します。
$targetKey = "dest.aac";

// オーディオ処理用のスタイル文字列とオーディオトランスコーディングパラメーターを構築します。
$animationStyle = "audio/convert,ss_10000,t_60000,f_aac,ab_96000";

// 保存パスと Base64 でエンコードされたバケット名およびターゲットファイル名を含む非同期処理命令を構築します。
$bucketNameEncoded = base64_encode($bucketName); // バケット名を Base64 でエンコードします。
$targetKeyEncoded = base64_encode($targetKey);   // ターゲットファイル名を Base64 でエンコードします。
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $animationStyle,
    $bucketNameEncoded,
    $targetKeyEncoded
);

// 非同期オブジェクト処理のためのリクエストオブジェクトを作成します。
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // バケットの名前。
    key: $objectName,         // オブジェクトの名前。
    asyncProcess: $process    // 非同期処理命令。
);

// asyncProcessObject メソッドを呼び出して、オブジェクトを非同期に処理します。
$result = $client->asyncProcessObject($request);

// 返された結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答ステータスコード。
    'request id:' . $result->requestId . PHP_EOL .   // リクエストの一意の ID。
    'async process result:' . var_export($result, true) . PHP_EOL // 非同期処理の結果。
);

オーディオマージ

オーディオマージ機能を使用すると、複数のオーディオファイルを 1 つのオーディオファイルに結合し、必要なフォーマットに変換できます。

<?php

// autoload ファイルをインポートして、依存関係ライブラリをロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須です。このパラメーターは、バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプションです。このパラメーターは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
    "key" => ['help' => 'The name of the object', 'required' => True], // オブジェクト名は必須です。
];

// コマンドライン引数を解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの後にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須の引数が欠落していることをユーザーにプロンプト表示します。
        exit(1);
    }
}

// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"];       // オブジェクトの名前。

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

// グローバル変数を定義します。
$region = ''; // ストレージリージョン。
$bucketName = ''; // バケットの名前。

// コマンドライン引数を解析します。
$options = getopt('', ['region:', 'bucket:']);

// ストレージリージョンが空かどうかを確認します。
if (empty($options['region'])) {
    echo "Error: invalid parameters, region required\n";
    exit(1);
}

// バケット名が空かどうかを確認します。
if (empty($options['bucket'])) {
    echo "Error: invalid parameters, bucket name required\n";
    exit(1);
}

// コマンドライン引数の値を取得します。
$region = $options['region'];
$bucketName = $options['bucket'];

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// マージするオーディオファイルの名前。
$audio1 = "src1.mp3";
$audio2 = "src2.mp3";

// マージされたオーディオファイルの名前を指定します。
$targetAudio = "dest.aac";

// オーディオ処理用のスタイル文字列とオーディオマージパラメーターを構築します。
$audio1Encoded = base64_encode($audio1); // 最初のオーディオファイルの名前を Base64 でエンコードします。
$audio2Encoded = base64_encode($audio2); // 2 番目のオーディオファイルの名前を Base64 でエンコードします。
$style = sprintf(
    "audio/concat,f_aac,ac_1,ar_44100,ab_96000,align_2/pre,o_%s/pre,o_%s,t_0",
    $audio1Encoded,
    $audio2Encoded
);

// 保存パスと Base64 でエンコードされたバケット名およびターゲットファイル名を含む非同期処理命令を構築します。
$bucketEncoded = base64_encode($bucketName); // バケット名を Base64 でエンコードします。
$targetEncoded = base64_encode($targetAudio); // ターゲットファイル名を Base64 でエンコードします。
$process = sprintf(
    "%s|sys/saveas,b_%s,o_%s/notify,topic_QXVkaW9Db252ZXJ0",
    $style,
    $bucketEncoded,
    $targetEncoded
);

// 非同期オブジェクト処理のためのリクエストオブジェクトを作成します。
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // バケットの名前。
    asyncProcess: $process    // 非同期処理命令。
);

// asyncProcessObject メソッドを呼び出して、オブジェクトを非同期に処理します。
$result = $client->asyncProcessObject($request);

// 返された結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答ステータスコード。
    'request id:' . $result->requestId . PHP_EOL .   // リクエストの一意の ID。
    'async process result:' . var_export($result, true) . PHP_EOL // 非同期処理の結果。
);

イメージブラインドウォーターマークの解析

次のサンプルコードは、イメージ内のブラインドウォーターマークを解析する方法の例を示しています。

<?php

// autoload ファイルをインポートして、依存関係ライブラリをロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須です。このパラメーターは、バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプションです。このパラメーターは、他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
    "key" => ['help' => 'The name of the object', 'required' => True], // オブジェクト名は必須です。
];

// コマンドライン引数を解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの後にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須の引数が欠落していることをユーザーにプロンプト表示します。
        exit(1);
    }
}

// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"];       // オブジェクトの名前。

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// エンドポイントが指定されている場合は、エンドポイントを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

// グローバル変数を定義します。
$region = ''; // ストレージリージョン。
$bucketName = ''; // バケットの名前。

// コマンドライン引数を解析します。
$options = getopt('', ['region:', 'bucket:']);

// ストレージリージョンが空かどうかを確認します。
if (empty($options['region'])) {
    echo "Error: invalid parameters, region required\n";
    exit(1);
}

// バケット名が空かどうかを確認します。
if (empty($options['bucket'])) {
    echo "Error: invalid parameters, bucket name required\n";
    exit(1);
}

// コマンドライン引数の値を取得します。
$region = $options['region'];
$bucketName = $options['bucket'];

// 環境変数を使用して、認証情報 (AccessKey ID と AccessKey Secret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを設定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを設定します。
$cfg->setRegion($region);

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// ウォーターマーク付きイメージファイルの名前を指定します。
$sourceKey = $objectName; // 処理するイメージオブジェクトの名前を指定します。

// MNS メッセージの Topic を指定します。
$topic = "imm-blindwatermark-test";

// 指定されたイメージからウォーターマークコンテンツを抽出します。
$style = "image/deblindwatermark,s_low,t_text";
$encodedTopic = rtrim(base64_encode($topic), '='); // Base64 でエンコードし、末尾の等号 (=) を削除します。
$process = sprintf(
    "%s|sys/notify,topic_%s",
    $style,
    $encodedTopic
);

// 非同期オブジェクト処理のためのリクエストオブジェクトを作成します。
$request = new Oss\Models\AsyncProcessObjectRequest(
    bucket: $bucketName,      // バケットの名前。
    key: $sourceKey,          // 処理するイメージの名前を指定します。
    asyncProcess: $process    // 非同期処理命令。
);

// asyncProcessObject メソッドを呼び出して、オブジェクトを非同期に処理します。
$result = $client->asyncProcessObject($request);

// 返された結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP 応答ステータスコード。
    'request id:' . $result->requestId . PHP_EOL .   // リクエストの一意の ID。
    'async process result:' . var_export($result, true) . PHP_EOL // 非同期処理の結果。
);

関連情報

  • 非同期処理機能の詳細については、「非同期処理」をご参照ください。

  • 非同期処理機能のサンプルコードについては、「AsyncProcessObject」をご参照ください。