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

:シナリオ

最終更新日:Dec 22, 2023

このトピックでは、OSS SDK for Media-Cのシナリオについて説明します。

重要 まず、[クライアント操作][サーバー操作] を理解することを推奨します。

ビデオファイルをOSSにアップロードする

序文に記載されているように、OSS SDK for Media-Cは、ネットワークカメラなどのデバイスに使用できます。

OSS SDK for Media-Cを使用して、ネットワークカメラでキャプチャしたビデオファイルをOSSにアップロードするには、次の手順を実行します。
説明 この手順では、ネットワークカメラはOSS SDK for Media-Cで定義されたクライアントとして機能し、アプリケーションサーバーはOSS SDK for Media-Cで定義されたサーバーとして機能します。
  1. ネットワークカメラがアプリケーションサーバーにリクエストを送信し、OSSにビデオをアップロードする権限を取得します。
  2. アプリケーションはリクエストを受信し、OSS SDK for Media-Cが提供するget_token操作を使用して、ネットワークカメラがAlibaba Cloudから特定の期間内にのみオブジェクトをアップロードできるようにするトークンをリクエストします。
  3. Alibaba Cloudは、アプリケーションサーバーからリクエストを受信し、ユーザーの設定を確認し、一時的なAccessKey ID、AccessKey secret、およびSTSトークンを含む一時的なトークンを生成し、そのトークンをアプリケーションサーバーに返します。 この一時トークンにより、ネットワークカメラはオブジェクトをOSSにのみアップロードでき、特定の期間内にのみ有効です。
  4. アプリケーションは、一時トークンを受信し、トークンをネットワークカメラに送信する。
  5. ネットワークカメラはトークンを受信し、OSS SDK for Media-Cのクライアント部分が提供するoss_media_write操作を使用して、ビデオファイルをOSSにアップロードします。
    説明 アプリケーションサーバーでOSS SDK for Media-Cのサーバー部分を使用したり、OSS SDK for Java、Go、Python、またはRubyを使用してHTTPサービスを実装したりすることもできます。 このようにして、アップロードされたビデオファイルをwebページで表示および管理できます。

サンプルコード

次のコードでは、前のセクションで説明した操作をクライアントとサーバーで実行する方法の例を示します。

char * global_temp_access_key_id = NULL;
char * global_temp_access_key_secret = NULL;
char * global_temp_token = NULL;
/* 承認機能 * /
static void auth_func(oss_media_file_t * ファイル) {
    file->endpoint = "your endpoint";
    ファイル->is_cname = 0; 
    ファイル->access_key_id = global_temp_access_key_id;
    ファイル->access_key_secret = global_temp_access_key_secret;
    file->token = global_temp_token; 
    /* 一時トークンの有効期間を指定します。  */
    ファイル-> 有効期限=時間 (NULL) + 300;
}
/* トークンをクライアントに送信します。 * /
static void send_token_to_client(oss_media_token_t token) {
    global_temp_access_key_id = token.tmpAccessKeyId;
    global_temp_access_key_secret = token.tmpAccessKeySecret;
    global_temp_token = token.securityToken;
}
void get_and_use_token() {
    oss_media_token_tトークン;
    /* サーバーはAlibaba Cloudから一時トークンを取得し、トークンをクライアントに送信します。 */
    {
        int ret;
        char * policy = NULL;
        oss_media_config_t config;
    
        policy = "{\n"
                 "\" ステートメント \": [\n"
                 "{"
                 "\" アクション \": \" oss:*\",\n"
                 "\" 効果 \": \" 許可 \"、\n"
                 "\" リソース \": \" *\"\n"
                 "}\n"
                 "],\n"
                 "\" バージョン \": \" 1\"\n"
                 "}\n";
        init_media_config(&config);
    /* サーバーが一時トークンを要求します。 */
        ret = oss_media_get_token_from_policy(&config, policy,
                 17*60、&トークン);
    if (ret != 0) {
       printf ("Get token failed.");
       return;
    }
    /* サーバーは、取得した一時トークンをクライアントに送信します。 */
        send_token_to_client (トークン);
    }
    /* クライアントは、サーバーから受信したトークンを使用して、ファイルに対する操作を実行します。 */
    {
        int ret;
        int64_t write_size = 0;
        oss_media_file_t * file = NULL;
        char * content = NULL;
    char * bucket_name;
    char * object_key;
        oss_media_file_stat_t stat;
        content = "hello oss media file\n";
    bucket_name = "<バケット名>";
    object_key = "key";
        /* クライアントがファイルを開きます。 */
        file = oss_media_file_open(bucket_name, object_key, "w", auth_func);
        if (file != NULL) {
        printf ("ファイルのオープンに失敗しました。");
        return;
    }
        /* クライアントがファイルにデータを書き込みます。 */
        write_size = oss_media_file_write (ファイル、コンテンツ、strlen (コンテンツ));
        if (write_size != strlen(content)) {
        printf ("ファイルの書き込みに失敗しました。");
        return;
    }
        /* クライアントはファイルを閉じてリソースを解放します。 */
        oss_media_file_close (ファイル);
    }
}
                    
説明
  • 次の方法で、コードに含まれるRAMポリシーを取得できます。RAMコンソールにログインし、[RAMロール] をクリックし、任意のRAMロールの [ポリシードキュメント] タブからRAMポリシーを取得します。
  • 正確な権限制御が必要ない場合は、oss_media_get_token操作を使用できます。 この場合、pathパラメーターを /* に、modeパラメーターをrwaに設定できます。