This topic describes how to use the server upload SDK for PHP to upload media files to ApsaraVideo VOD.

アップロードのプロセス

PHPのサーバーアップロードSDKで使用される内部アップロードロジックは、サーバーアップロードSDKの一般的なアップロードプロセスと同じです。 詳細については、アップロードのプロセストピックの「アップロードプロセス」セクションを参照してください。 The following content describes the basic process of using the server upload SDK for PHP:
  1. Complete the prerequisites. 詳細については、「前提条件」セクションをご参照ください。
  2. Integrate the upload SDK for PHP. For more information, see the PHPのアップロードSDKの統合 section.
  3. アップロードロジックを実装します。 これにはアップロード情報の設定が含まれます。

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

  1. Download the VodUploadSDK-PHP_1.0.3.zip package, which contains the upload SDK for PHP and sample code. 詳細については、「SDKダウンロード」をご参照ください。
    • In this example, the SDK V1.0.3 is used. You can use other versions based on your business requirements.
    • アップロードSDK For PHPのディレクトリと解凍後のサンプルコードの詳細については、「アップロードSDK for PHPのディレクトリ」をご参照ください。
  2. Decompress the VodUploadSDK-PHP_1.0.3.zip package and copy the voduploadsdk directory from the VodUploadSDK-PHP_1.0.3 directory to your project.

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

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

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

オーディオおよびビデオファイルのアップロード

通常のオーディオおよびビデオファイル
アップロードSDK for PHPは、次の種類のオーディオおよびビデオファイルをサポートしています。
  • ローカルファイル。 マルチパートアップロードが使用されます。 アップロードする1つのファイルのサイズは最大48.8テラバイトです。 再開可能なアップロードはサポートされていません。 詳細については、次のサンプルコードのtestUploadLocalVideo関数を参照してください。
  • Online files. アップロードURLを指定してオンラインファイルをアップロードできます。 アップロードする1つのファイルのサイズは最大48.8テラバイトです。 オンラインファイルをアップロードする前に、ファイルをローカルディスクにダウンロードする必要があります。 ローカルディスクに十分な容量があることを確認してください。 For more information, see the testUploadWebVideo function in the following sample code.

Part of the sample code for uploading ordinary videos:

<?php
/**
 * Aliyun ApsaraVideo VODによって作成されました。
 * /
require_once dirname(__DIR__) 。 DIRECTORY_SEPARATOR。 'voduploadsdk' . DIRECTORY_SEPARATOR。 'Autoloader.php';
date_default_timezone_set('PRC');
// ローカルビデオのアップロードをテストします。
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. 例: 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=配列 (
            // コールバックURL。 例: 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 video.
関数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場所: % s % s\nトレース: % s\n" 、
            $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
    }
}

#### テストコードを実行します。   ####
$accessKeyId = '<AccessKeyId>';
$accessKeySecret = '<AccessKeySecret>';

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

// The URL of the online video. 例: http:// Example-bucket-**** .cn-shanghai.aliyuncs.com/b55b904bc612463b812990b7c8cc****/daa30814c0c340cf8199926f78aa****-a0bc05ba62c3e95cc672e88b8281****-ld.mp4?auth_key=1608774986-0-0-c56acd302bea0c331370d8ed6865****.
$webFileURL = '<あなたのwebFileURL>';
testUploadWebVideo($accessKeyId、$accessKeySecret、$webFileURL);
M3U8ビデオ

M3U8ビデオをアップロードするためのサンプルコードの一部:

<?php
/**
 * 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 ');
        // M3U8プレイリストを解析するメソッドを呼び出して、パーツのURLを取得します。 If the parsing result is invalid, manually assemble the URLs of parts. デフォルトでは、部品ファイルとM3U8ファイルは同じディレクトリに格納されます。
        $sliceFiles = $uploader->parseM3u8File($m3u8FilePath);
        // print_r($sliceFiles);
        $res = $uploader->uploadLocalM3u8($uploadVideoRequest、$sliceFiles);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadLocalM3u8 Failed, ErrorMessage: % s\n場所: % s % s\nトレース: % s\n" 、
            $e->getMessage() 、$e->getFile() 、$e->getLine() 、$e->getTraceAsString();
    }
}

// オンラインM3U8ビデオのアップロードをテストします。
関数testUploadWebM3u8($accessKeyId、$accessKeySecret、$m3u8FileUrl)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId、$accessKeySecret);
        $uploadVideoRequest = new UploadVideoRequest($m3u8FileUrl, 'testUploadWebM3u8 via PHP-SDK');
        // M3U8プレイリストを解析するメソッドを呼び出して、パーツのURLを取得します。 解析結果が無効な場合は、部品のURLを手動でアセンブルします。 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();
    }
}
#### テストコードを実行します。   ####
$accessKeyId = '<AccessKeyId>';
$accessKeySecret = '<AccessKeySecret>';
$localM3u8FilePath = '/opt/video/m3u8/sample.m3u8';
// testUploadLocalM3u8($accessKeyId、$accessKeySecret、$localM3u8FilePath);

// オンラインM3U8ビデオのURL。 例: http:// Example-bucket-**** .cn-shanghai.aliyuncs.com/b55b904bc612463b812990b7c8cc****/daa30814c0c340cf8199926f78aa****-195a25af366b5edae324c47e99a0****-ld.m3u8?auth_key=1608775606-0-0-9fb038deaecd009dadd86721c585****.
$webM3u8FileURL = '<あなたのwebM3u8FileURL>';
// testUploadWebM3u8($accessKeyId、$accessKeySecret、$webM3u8FileURL);

画像のアップロード

画像をアップロードするためのサンプルコードの一部:

<?php
/**
 * Aliyun ApsaraVideo VoDによって作成されました。
 * ユーザー: https://www.aliyun.com/product/vod
 * /

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

date_default_timezone_set('PRC');

# ローカル画像のアップロードをテストします。
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());
    }

}

// オンライン画像のアップロードをテストします。
関数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());
    }

}



#### テストコードを実行します。   ####
$accessKeyId = '<AccessKeyId>';
$accessKeySecret = '<AccessKeySecret>';

$localFilePath = '/opt /画像 /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);

補助メディア資産のアップロード

Part of the sample code for uploading auxiliary media assets:

<?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.
関数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());
    }

}

// オンライン補助メディアアセットのアップロードをテストします。
関数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());
    }

}


#### テストコードを実行します。   ####
$accessKeyId = '<AccessKeyId>';
$accessKeySecret = '<AccessKeySecret>';

$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);

アップロードSDK for PHPのディレクトリ

/VodUploadSDK-PHP_1.0.3.zip解凍ディレクトリ /VodUploadSDK-PHP_1.0.3/voduploadsdk/uploader
  • UploadVideoRequest.php
    ディレクトリ 説明
    UploadVideoRequest ビデオをアップロードするためのリクエストクラス。 パラメーターの詳細については、「CreateUploadVideo」をご参照ください。
  • UploadImageRequest.php
    ディレクトリ 説明
    UploadImageRequest 画像をアップロードするためのリクエストクラス。 パラメーターの詳細については、「t1235495.html#doc_api_vod_CreateUploadImage」をご参照ください。
  • UploadAttachedMediaRequest.php
    ディレクトリ 説明
    UploadAttachedMediaRequest 補助メディアアセットをアップロードするためのリクエストクラス。 パラメーターの詳細については、「CreateUploadAttachedMedia」をご参照ください。
  • AliyunVodUploader.php
    ディレクトリ 説明
    __construct アップロードのAccessKeyペアとApsaraVideo VODエンドポイントを設定するために使用されるコンストラクター。 詳細については、「RAMユーザーの作成と権限付与」とApsaraVideo VODのリージョンIDをご参照ください。
    uploadLocalVideo ローカルビデオのアップロードに使用される方法。
    uploadWebVideo オンラインビデオのアップロードに使用される方法。
    uploadLocalImage ローカル画像のアップロードに使用される方法。
    uploadWebImage オンライン画像のアップロードに使用される方法。
    uploadLocalAttachedMedia ローカル補助メディア資産のアップロードに使用される方法。
    uploadWebAttachedMedia オンライン補助メディア資産をアップロードするために使用される方法。
    uploadLocalM3u8 ローカルM3U8ビデオのアップロードに使用される方法。
    uploadWebM3u8 オンラインM3U8ビデオをアップロードするために使用される方法。
    parseM3u8File M3U8プレイリストを解析してパーツのURLを取得するために使用されるメソッド。
    setEcsRegionId アップロードスクリプトがデプロイされるElastic Compute Service (ECS) インスタンスのリージョンを指定するために使用されるメソッド。 ECSインスタンスのリージョンがApsaraVideo VODのストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
    setEnableSSL The method used to specify whether to enable SSL for HTTPS requests. デフォルトでは、関連する拡張機能がインストールされていない場合、または構成例外が発生した場合に、SDKの使用が失敗しないようにSSLは無効になっています。
    uploadProgressCallback アップロードの進行状況のコールバックを設定するために使用されるメソッド。 このメソッドはオーバーライドできます。
  • 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が依存する基本クラスを提供します。 This package encapsulates Alibaba Cloud API signatures and HTTP requests.
  • 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: 補助メディアアセットをアップロードするためのサンプルコードを提供します。