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

ApsaraVideo VOD:アップロードSDK for PHPを使用してファイルをアップロードする

最終更新日:Oct 28, 2024

このトピックでは、アップロードSDK for PHPを使用してメディアファイルをApsaraVideo VODにアップロードして保存する方法について説明します。

アップロードのプロセス

アップロードSDK for Javaは、ApsaraVideo VOD SDKの一般的なアップロードプロセスに従います。 詳細については、「アップロードプロセス」をご参照ください。 次のコンテンツでは、アップロードSDK for PHPを使用するプロセスについて説明します。

  1. [前提条件] セクションの説明に従って、設定を完了します。

  2. PHP用のアップロードSDKを統合します。 詳細については、「PHP用アップロードSDKの統合」をご参照ください。

  3. アップロードロジックを実装するためのアップロード情報を設定します。

  4. PHP用アップロードSDKのデフォルトのエンドポイントはcn-shanghaiです。 メディアファイルを中国 (上海) 以外のリージョンにアップロードする場合は、SDKの初期化時にAliyunVodUploaderを設定してリージョンを指定できます。 サポートされているエンドポイントの詳細については、「エンドポイント」をご参照ください。

    次のサンプルコードは、中国 (北京) リージョンにメディアファイルをアップロードする方法の例を示しています。

    $apiRegionId = 'cn-beijing';  // Upload media files to the China (Beijing) region.
    $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret, $apiRegionId);

前提条件

  • ApsaraVideo VODが有効化されています。 詳細については、「ApsaraVideo VODの有効化」をご参照ください。

  • 指定されたリージョンのストレージパスやコールバック設定など、アップロードに必要なシステム設定が構成されます。 詳細については、「ストレージバケットの管理」および「コールバックの設定」をご参照ください。

  • RAMユーザーが作成され、ApsaraVideo VODへのアクセスに使用されます。 Alibaba CloudアカウントのAccessKeyペアの漏洩によるセキュリティリスクを防ぐため、RAMユーザーを作成し、ApsaraVideo VODへのアクセスに必要な権限をRAMユーザーに付与することを推奨します。 その後、RAMユーザーのAccessKeyペアを使用してApsaraVideo VODにアクセスできます。 詳細については、「Create and grant permissions to a RAM user」をご参照ください。

  • ALIBABA_CLOUD_ACCESS_KEY_IDおよびALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数を設定します。 詳細については、「Linux、macOS、およびWindowsでの環境変数の設定」をご参照ください。

    重要
    • Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 RAMユーザーのAccessKeyペアを使用して、API操作を呼び出したり、ルーチンのO&Mを実行したりすることを推奨します。

    • AccessKey IDとAccessKeyシークレットをプロジェクトコードにハードコードしないことを推奨します。 そうしないと、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。

  • オプションです。 RAMユーザー用にロールが作成され、Security Token Service (STS) を使用してApsaraVideo VODにアクセスする場合は、ApsaraVideo VODにアクセスするために必要な権限がロールに付与されます。 詳細については、「STSを使用した動画のアップロード」をご参照ください。

    説明

    STSを使用できるシナリオの詳細については、「資格情報とSTSの比較」をご参照ください。

PHPのアップロードSDKの統合

  1. PHP用アップロードSDKとサンプルコードを含むパッケージVodUploadSDK-PHP_1.0.3.zipをダウンロードします。 詳細については、「SDKの概要とダウンロード」をご参照ください。

    説明
    • この例では、PHP V1.0.3のアップロードSDKが使用されています。 ビジネス要件に基づいて他のバージョンを使用できます。

    • 解凍後のディレクトリの詳細については、「ディレクトリ」をご参照ください。

  2. VodUploadSDK-PHP_1.0.3.zipファイルを解凍し、VodUploadSDK-PHP_1.0.3ディレクトリのvoduploadsdkフォルダーをプロジェクトにコピーします。

PHPのアップロードSDKの更新

現在のSDKで新しい操作または既存の操作の新機能が使用できない場合は、SDKを最新バージョンに更新します。 詳細については、「SDKのアップロード」をご参照ください。

説明

現在のSDKのバージョン番号とリリース日は、voduploadsdkディレクトリのChangeLog.txtファイルの最初の行で取得できます。

ディレクトリ

/VodUploadSDK-PHP_1.0.3.zip/VodUploadSDK-PHP_1.0.3/voduploadsdk/uploader

  • UploadVideoRequest.php

    ディレクトリ

    説明

    UploadVideoRequest

    ビデオアップロードのリクエストクラス。 パラメーターの詳細については、「CreateUploadVideo」をご参照ください。

  • UploadImageRequest.php

    ディレクトリ

    説明

    UploadImageRequest

    画像アップロードのリクエストクラス。 パラメーターの詳細については、「CreateUploadImage」をご参照ください。

  • UploadAttachedMediaRequest.php

    ディレクトリ

    説明

    UploadAttachedMediaRequest

    補助メディアアセットのアップロードのリクエストクラス。 パラメーターの詳細については、「CreateUploadAttachedMedia」をご参照ください。

  • AliyunVodUploader.php

    ディレクトリ

    説明

    __construct

    ApsaraVideo VODのAccessKeyペア、アクセスリージョン、およびアクセスドメイン名を設定するために使用されるコンストラクター。 詳細については、「RAMユーザーの作成と権限付与」および「ApsaraVideo VODのリージョンID」をご参照ください。

    uploadLocalVideo

    ローカルビデオのアップロードに使用されるAPI操作。

    uploadWebVideo

    オンラインビデオのアップロードに使用されるAPI操作。

    uploadLocalImage

    ローカル画像のアップロードに使用されるAPI操作。

    uploadWebImage

    オンライン画像のアップロードに使用されるAPI操作。

    uploadLocalAttachedMedia

    ローカル補助メディアアセットをアップロードするために使用されるAPI操作。

    uploadWebAttachedMedia

    オンライン補助メディアアセットのアップロードに使用されるAPI操作。

    uploadLocalM3u8

    ローカルM3U8ビデオのアップロードに使用されるAPI操作。

    uploadWebM3u8

    オンラインM3U8ビデオのアップロードに使用されるAPI操作。

    parseM3u8File

    M3U8インデックスファイルを解析してパーツファイルのURLを取得するために使用されるAPI操作。

    setEcsRegionId

    アップロードスクリプトがデプロイされるElastic Compute Service (ECS) インスタンスのリージョンを指定するために使用されるAPI操作。 ECSインスタンスのリージョンがApsaraVideo VODのストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。

    setEnableSSL

    HTTPS経由でリクエストを送信するかどうかを指定するために使用されるAPI操作。 デフォルトでは、関連する拡張機能がインストールされていない場合、または構成例外が発生した場合に障害を防ぐため、HTTPSは無効になります。

    uploadProgressCallback

    アップロードの進行状況のコールバックを設定するために使用されるAPI操作。 この結果はオーバーライドできます。

  • AliyunVodUtils.php

    ディレクトリ

    説明

    AliyunVodUtils

    文字列を切り捨て、拡張子とファイル名を取得するための静的関数を提供するユーティリティクラス。

    AliyunVodLog

    ログ機能を提供するログクラス。 logSwitchパラメーターを設定して、ロギングを有効または無効にできます。

    AliyunVodDownloader

    オンラインファイルのダウンロードに使用されるクラス。

    AliyunVodReportUpload

    アップロードの進行状況を報告するために使用されるクラス。

    AliyunVodError

    エラーコードを定義するために使用されるクラス。

/VodUploadSDK-PHP_1.0.3.zip/VodUploadSDK-PHP_1.0.3/voduploadsdk

  • aliyun-php-sdk-core: アップロードSDKが依存する基本クラス。 このパッケージは、Alibaba Cloud API署名とHTTPリクエストをカプセル化します。

  • aliyun-php-sdk-vod: ApsaraVideo VOD SDK。 このパッケージは、ApsaraVideo VODのAPIリクエストをカプセル化します。

  • aliyun-php-sdk-oss: アップロードSDKが依存するObject Storage Service (OSS) クラス。 このパッケージは、OSSアップロードなどの操作をカプセル化します。

/VodUploadSDK-PHP_1.0.3.zip/VodUploadSDK-PHP_1.0.3 /サンプル

  • uploadVideo.php: ビデオアップロードのサンプルコード。

  • uploadImage.php: 画像アップロードのサンプルコード。

  • uploadAttachedMedia.php: 補助メディアアセットのアップロードのサンプルコード。

シナリオ1: オーディオファイルとビデオファイルのアップロード

通常のオーディオおよびビデオファイル

アップロードSDK for PHPは、次の種類のオーディオおよびビデオファイルをサポートしています。

  • マルチパートアップロードを使用して、ローカルファイルをアップロードします。 最大48.8テラバイトのファイルをアップロードできます。 再開可能なアップロードはサポートされていません。 詳細については、サンプルコードのtestUploadLocalVideo関数を参照してください。

  • ファイルのURLを使用してオンラインファイルをアップロードします。 最大48.8テラバイトのファイルをアップロードできます。 オンラインファイルをアップロードする前に、ファイルをローカルディスクにダウンロードする必要があります。 ローカルディスクに十分な容量があることを確認してください。 詳細については、サンプルコードのtestUploadWebVideo関数を参照してください。

サンプルコードを表示する

<?php
/**
 * Created by Aliyun ApsaraVideo VOD.
 */
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';
date_default_timezone_set('PRC');
// Test the upload of a local audio or video file.
function testUploadLocalVideo($accessKeyId, $accessKeySecret, $filePath)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadVideoRequest = new UploadVideoRequest($filePath, 'testUploadLocalVideo via PHP-SDK');
        //$uploadVideoRequest->setCateId(1);
        // The URL of the video thumbnail. Example: http://example.com/example****.jpg.
        //$uploadVideoRequest->setCoverURL("<your CoverURL>");
        //$uploadVideoRequest->setTags('test1,test2');
        //$uploadVideoRequest->setStorageLocation('outin-xx.oss-cn-beijing.aliyuncs.com');
        //$uploadVideoRequest->setTemplateGroupId('6ae347b0140181ad371d197ebe289****');
        $userData = array(
            // The callback URL. Example: https://demo.aliyundoc.com/ProcessMessageCallback.
            "MessageCallback"=>array("CallbackURL"=>"<your callback URL>"),
            "Extend"=>array("localId"=>"xxx", "test"=>"www")
        );
        $uploadVideoRequest->setUserData(json_encode($userData));
        $res = $uploader->uploadLocalVideo($uploadVideoRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadLocalVideo Failed, ErrorMessage: %s\n Location: %s %s\n Trace: %s\n",
            $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
    }
}
// Test the upload of an online audio or video file.
function testUploadWebVideo($accessKeyId, $accessKeySecret, $fileURL)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadVideoRequest = new UploadVideoRequest($fileURL, 'testUploadWebVideo via PHP-SDK');
        $res = $uploader->uploadWebVideo($uploadVideoRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadWebVideo Failed, ErrorMessage: %s\n Location: %s %s\n Trace: %s\n",
            $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
    }
}

####  Run the test code.   ####
// The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
// We recommend that you not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
// In this example, ApsaraVideo VOD reads the AccessKey pair from the environment variables to implement identity verification for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');

//$localFilePath = 'C:\test\sample.mp4';
$localFilePath = '/opt/video/sample.mp4';
//testUploadLocalVideo($accessKeyId, $accessKeySecret, $localFilePath);

// The URL of the online audio or video file. Example: http://example-bucket-****.cn-shanghai.aliyuncs.com/b55b904bc612463b812990b7c8cc****/daa30814c0c340cf8199926f78aa****-a0bc05ba62c3e95cc672e88b8281****-ld.mp4?auth_key=1608774986-0-0-c56acd302bea0c331370d8ed6865****.
$webFileURL = '<your webFileURL>';
testUploadWebVideo($accessKeyId, $accessKeySecret, $webFileURL);

M3U8ファイル

サンプルコード:

サンプルコードを表示する

<?php
/**
 * Created by Aliyun ApsaraVideo VOD.
 */
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';
date_default_timezone_set('PRC');
// Test the upload of a local M3U8 video.
function testUploadLocalM3u8($accessKeyId, $accessKeySecret, $m3u8FilePath)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadVideoRequest = new UploadVideoRequest($m3u8FilePath, 'testUploadLocalM3u8 via PHP-SDK');
        // Parse the part file URLs of the M3U8 file. If the parsing result is invalid, concatenate the URLs of part files. By default, the part files and M3U8 file are stored in the same directory.
        $sliceFiles = $uploader->parseM3u8File($m3u8FilePath);
        //print_r($sliceFiles);
        $res = $uploader->uploadLocalM3u8($uploadVideoRequest, $sliceFiles);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadLocalM3u8 Failed, ErrorMessage: %s\n Location: %s %s\n Trace: %s\n",
            $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
    }
}

// Test the upload of an online M3U8 video.
function testUploadWebM3u8($accessKeyId, $accessKeySecret, $m3u8FileUrl)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadVideoRequest = new UploadVideoRequest($m3u8FileUrl, 'testUploadWebM3u8 via PHP-SDK');
        // Parse the part file URLs of the M3U8 file. If the parsing result is invalid, concatenate the URLs of part files. By default, the part files and M3U8 file are stored in the same directory.
        $sliceFileUrls = $uploader->parseM3u8File($m3u8FileUrl);
        //print_r($sliceFileUrls);
        $res = $uploader->uploadWebM3u8($uploadVideoRequest, $sliceFileUrls);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadWebM3u8 Failed, ErrorMessage: %s\n Location: %s %s\n Trace: %s\n",
            $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
    }
}
####  Run the test code.   ####
// The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
// We recommend that you not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
// In this example, ApsaraVideo VOD reads the AccessKey pair from the environment variables to implement identity verification for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
$localM3u8FilePath = '/opt/video/m3u8/sample.m3u8';
//testUploadLocalM3u8($accessKeyId, $accessKeySecret, $localM3u8FilePath);

// The URL of the online M3U8 video. Example: http://example-bucket-****.cn-shanghai.aliyuncs.com/b55b904bc612463b812990b7c8cc****/daa30814c0c340cf8199926f78aa****-195a25af366b5edae324c47e99a0****-ld.m3u8?auth_key=1608775606-0-0-9fb038deaecd009dadd86721c585****.
$webM3u8FileURL = '<your webM3u8FileURL>';
//testUploadWebM3u8($accessKeyId, $accessKeySecret, $webM3u8FileURL);

シナリオ2: 画像のアップロード

サンプルコードを表示する

サンプルコードを表示する

<?php
/**
 * Created by Aliyun ApsaraVideo VoD.
 * User: https://www.aliyun.com/product/vod
 */

require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';

date_default_timezone_set('PRC');

# Test the upload of a local image.
function testUploadLocalImage($accessKeyId, $accessKeySecret, $filePath)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadImageRequest = new UploadImageRequest($filePath, 'testUploadLocalImage via PHP-SDK');
        $uploadImageRequest->setCateId(1000009458);
        $res = $uploader->uploadLocalImage($uploadImageRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadLocalImage Failed, ErrorMessage: %s\n", $e->getMessage());
    }

}

// Test the upload of an online image.
function testUploadWebImage($accessKeyId, $accessKeySecret, $fileURL)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadImageRequest = new UploadImageRequest($fileURL, 'testUploadWebImage via PHP-SDK');
        $uploadImageRequest->setCateId(1000009458);
        $res = $uploader->uploadWebImage($uploadImageRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadWebImage Failed, ErrorMessage: %s\n", $e->getMessage());
    }

}



####  Run the test code.   ####
// The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
// We recommend that you not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
// In this example, ApsaraVideo VOD reads the AccessKey pair from the environment variables to implement identity verification for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');

$localFilePath = '/opt/image/test-image.jpg';
//testUploadLocalImage($accessKeyId, $accessKeySecret, $localFilePath);

$webFileURL = 'http://vod-download.cn-shanghai.aliyuncs.com/retina/pic/20180208/496AE240-54AE-4CC8-8578-3EEC8F38****.gif';
testUploadWebImage($accessKeyId, $accessKeySecret, $webFileURL);

シナリオ3: 補助メディア資産のアップロード

サンプルコード:

サンプルコードを表示する

サンプルコードを表示する

<?php
/**
 * Created by Aliyun ApsaraVideo VoD.
 * User: https://www.aliyun.com/product/vod
 */

require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';

date_default_timezone_set('PRC');

// Test the upload of a local auxiliary media asset.
function testUploadLocalAttachedMedia($accessKeyId, $accessKeySecret, $filePath)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadAttachedRequest = new UploadAttachedMediaRequest($filePath, 'watermark',
            'testUploadLocalAttachedMedia via PHP-SDK');
        //$uploadAttachedRequest->setCateId(100000****);
        $res = $uploader->uploadLocalAttachedMedia($uploadAttachedRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadLocalAttachedMedia Failed, ErrorMessage: %s\n", $e->getMessage());
    }

}

// Test the upload of an online auxiliary media asset.
function testUploadWebAttachedMedia($accessKeyId, $accessKeySecret, $fileURL)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadAttachedRequest = new UploadAttachedMediaRequest($fileURL, 'watermark',
            'testUploadWebAttachedMedia via PHP-SDK');
        //$uploadAttachedRequest->setCateId(100000****);
        $res = $uploader->uploadWebAttachedMedia($uploadAttachedRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadWebAttachedMedia Failed, ErrorMessage: %s\n", $e->getMessage());
    }

}


####  Run the test code.   ####
// The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
// We recommend that you not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
// In this example, ApsaraVideo VOD reads the AccessKey pair from the environment variables to implement identity verification for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');

$localFilePath = '/opt/image/test.png';
//testUploadLocalAttachedMedia($accessKeyId, $accessKeySecret, $localFilePath);

$webFileURL = 'http://vod-download.cn-shanghai.aliyuncs.com/retina/pic/20180208/496AE240-54AE-4CC8-8578-3EEC8F38****.gif';
testUploadWebAttachedMedia($accessKeyId, $accessKeySecret, $webFileURL);

関連ドキュメント

概要

概要