ApsaraVideo for Short Video サーバーは、ApsaraVideo for Short Video アプリと ApsaraVideo VOD 間のデータ交換、ビジネスロジック処理、および運用データ管理を処理します。このトピックでは、ApsaraVideo for Short Video サーバーを統合する方法について説明します。
前提条件
Alibaba Cloud アカウントが作成され、実名検証が完了していること。Alibaba Cloud アカウントを作成するには、Alibaba Cloud 公式 Web サイトにアクセスしてください。詳細については、「Alibaba Cloud アカウントの作成」をご参照ください。
Elastic Compute Service (ECS) が有効化され、インスタンスが設定されていること。詳細については、「ECS サービスの有効化と設定」をご参照ください。
ECS サーバーに JDK 8 がインストールされていること。
ECS サーバーに MySQL 5.7 がインストールされていること。詳細については、「MySQL データベースのインストールと設定」をご参照ください。サービスが公開された後は、ApsaraDB RDS の使用を推奨します。詳細については、「ApsaraDB RDS」をご参照ください。
ApsaraVideo VOD が有効化され、必要なテンプレートがコンソールで設定されていること。詳細については、「ApsaraVideo VOD の有効化と設定」をご参照ください。
手順
ソースコードのアップロード
ApsaraVideo for Short Video サーバーと管理コンソールのソースコードをダウンロードします。ダウンロード URL については、「ApsaraVideo for Short Video SDK」をご参照ください。
ソースコードファイルが保存されているサーバーで、次のコマンドを実行してソースコードファイルを ECS サーバーにアップロードします。
scp <source_code_file> user@<IP_address_of_the_ECS_server>:<upload_path>
scp ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip user@10.0.0.0:/home/user/workspace/
ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip はソースコードファイルです。user は ECS サーバーのユーザー名です。10.0.0.0 は ECS サーバーの IP アドレスです。/home/user/workspace/ はアップロードパスです。
説明ソースコードファイル、ECS サーバーのユーザー名、ECS サーバーの IP アドレス、アップロードパスなどのサンプル情報は参考用です。サンプル情報を実際の情報に置き換えてください。
ECS サーバーにログインし、ソースコードファイルを解凍します。
cd /home/user/workspace
unzip ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip
説明unzip がインストールされていない場合は、sudo apt install unzip コマンドを実行してインストールしてください。
データベースの初期化と設定
独自の音楽ライブラリを構築できます。
返されるデータのデータ構造は、Alibaba Cloud サービスから音楽リストを取得するために使用されるデータ構造と同じでなければなりません。そうでない場合、リクエストは失敗します。
カスタムデータ構造を使用する場合は、デモレイヤーでコードロジックを調整する必要があります。
voddemo という名前のデータベースを作成します。
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/sql
mysqladmin -u root -p create voddemo
テーブルと管理者アカウントを作成します。
mysql -u root -p voddemo < ./appserver_create_table.sql
説明appserver_create_table.sql スクリプトは、テーブルを作成するだけでなく、INSERT 文を使用してコンソール管理者アカウントも作成します。ユーザー名は admin、パスワードは 123456 です。コンソールを統合した後、このアカウントを使用して管理者としてデモコンソールにログインできます。
データベースの大文字と小文字の区別ルールを変更します。
データベースの設定ファイルを編集します。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
I キーを押し、ファイルの末尾に
lower_case_table_names=1を追加します。Esc キーを押し、:wq! と入力してファイルを保存し、終了します。
データベースを再起動して設定を完了します。
sudo service mysql restart
データベースアドレスを設定します。
ソースコードの設定ファイルを編集します。
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
I キーを押し、ファイルを次のように変更します。
spring.datasource.url = jdbc:mysql://データベースの IP アドレス (127.0.0.1):3306/データベース名 (voddemo)?useSSL=false&useUnicode=true&characterEncoding=UTF-8 spring.datasource.username = データベースのログインユーザー名 (例: admin) spring.datasource.password = データベースのログインパスワード説明データベースとサーバーの両方が ECS インスタンスで実行されている場合は、データベースの IP アドレスを 127.0.0.1 に設定できます。そうでない場合は、データベースが配置されているマシンの IP アドレスを使用してください。
初期化時に作成したデータベースの名前は voddemo です。
Esc キーを押し、:wq! と入力してファイルを保存し、終了します。
RAM ロールの設定
一般的な手順は、「ロールの作成」で説明されている手順と同じです。そのトピックのステップ 6 を完了して権限を選択した後、次の手順を実行します。カスタムロール名を指定できます。このトピックでは、alivc-demo-role を例として使用します。
[ロール管理] ページで、作成した RAM ロールの名前 (alivc-demo-role など) をクリックして、その Alibaba Cloud リソースネーム (ARN) をクエリします。後で使用するために、RAM ロール名と ARN を記録しておくことを推奨します。
[ロール管理] ページで、RAM ロールの名前 (alivc-demo-role など) をクリックします。[信頼ポリシー] タブをクリックし、[信頼ポリシーの編集] をクリックします。信頼ポリシーを次のように変更します。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ecs.aliyuncs.com" ] } } ], "Version": "1" }これは、ロールがサービスロールであり、信頼された Alibaba Cloud サービス (ECS) によって偽装できることを示します。信頼ポリシーを変更しない場合、RAM ロールを ECS インスタンスにアタッチすることはできません。
インスタンス ID パラメーターを
["インスタンス ID"]に設定します。RAM ロールを ECS インスタンスにアタッチします。
OpenAPI Explorer で ECS の AttachInstanceRamRole API 操作を呼び出します。詳細については、「OpenAPI Explorer」をご参照ください。
説明RegionId: ECS インスタンスが配置されているリージョンの ID (中国 (上海) など)。リージョン ID は ECS コンソールでクエリできます。
RamRoleName: RAM ロールの名前。この例では、名前は alivc-demo-role です。
InstanceIds: RAM ロールをアタッチするサーバーサイド ECS インスタンスの ID。インスタンス ID は ECS コンソールでクエリできます。ID は ["i-bp135jrddxxf9tgo****"] のような配列形式である必要があります。
[呼び出し] をクリックします。呼び出しが成功すると、右側のデバッグ結果に成功メッセージが表示されます。
ECS ターミナルで次のコマンドを実行して、RAM ロールが ECS インスタンスに関連付けられているかどうかを確認します。
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/alivc-demo-role
次の情報が表示された場合、セキュリティトークンサービス (STS) からの一時的な権限付与が返されます。これは、RAM ロールが ECS インスタンスに関連付けられていることを示します。
{ "AccessKeyId" : "STS.XXXXXXXXXXXX", "AccessKeySecret" : "XXXXXXXXXXXXXXXX", "Expiration" : "2020-11-20T14:33:31Z", "SecurityToken" : "XXXXXXXXXXXXXXXXXXXXXX", "LastUpdated" : "2020-11-20T08:33:31Z", "Code" : "Success" }説明ECS インスタンスには 1 つの RAM ロールしかアタッチできません。RAM ロールを変更するには、OpenAPI Explorer で DetachInstanceRamRole 操作を呼び出して ECS インスタンスから RAM ロールをデタッチします。次に、AttachInstanceRamRole を呼び出して新しい RAM ロールをアタッチします。
RAM 情報を設定します。
ソースコードの設定ファイルを編集します。
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
I キーを押し、次の例に示すようにファイルを変更します。
roleArn = XXXXXXX:role/alivc-demo-role roleSessionName = vod-role roleName = alivc-demo-role
説明REGION_CN_HANGZHOU は、ApsaraVideo VOD サービスが配置されているリージョン (中国 (上海) の場合は cn-shanghai など) を示します。
roleArn は、RAM コンソールから取得した ARN を示します。
roleSessionName は、一時トークンのセッション名を示します。カスタム名を指定できます。
roleName は、RAM コンソールから取得した RAM ロールの名前を示します。この例では、名前は alivc-demo-role です。
Esc キーを押し、:wq! と入力してファイルを保存し、終了します。
ApsaraVideo VOD を設定します。
ソースコードの設定ファイルを編集します。
vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties
I キーを押し、ファイルを次のように変更します。

パラメーター名
必須
説明
TEMPLATEGROUP_ID
はい
トランスコーディングテンプレートグループの ID。詳細については、「トランスコーディングテンプレートグループ」をご参照ください。
LONGVIDEO_TRANSCODE_TEMPLATEGROUP_ID
いいえ
長尺動画の事前公開・事後レビュー機能に使用されるトランスコーディングテンプレートグループ。
TAB_TEMPLATEGROUP_ID
いいえ
ナローバンド HD トランスコーディングテンプレートグループの ID。コンソールでナローバンド HD 動画を推奨するようにこのパラメーターを設定します。このパラメーターが指定されていない場合、ナローバンド HD 動画を推奨するとエラーが発生します。
DOMAIN_NAME
はい
ECS サーバーのアドレス。この例では、アドレスは http://10.10.10.101:8080/ です。
AVATAR_DOMAIN_NAME
いいえ
プロフィール写真リソースのアドレス。これは ECS サーバーの静的リソースアドレスです。この例では、アドレスは http://10.10.10.101:8080/resource/ です。
AVATAR_URL
いいえ
プロフィール写真のファイル名のリスト (例: 1.png,2.png)。
説明対応するプロフィール写真ファイル 1.png と 2.png を /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/webapp/resource ディレクトリに配置します。プロフィール写真サービスが設定されていない場合、モバイルクライアントユーザーにはプロフィール写真が表示されません。これは他の機能には影響しません。
VOD_REGIONID
はい
VOD サービスが配置されているリージョン。この例では、リージョンは cn-shanghai です。
policy
はい
ロールを偽装するときに追加する追加の権限制限。詳細については、「カスタム権限付与のための RAM ポリシーの使用」をご参照ください。
CALLBACK_PRIVETEKEY
はい
コールバック認証設定の認証キー。詳細については、「コールバック設定」をご参照ください。
CALLBACK_NAME
はい
コールバック URL。http://<ECS インスタンスのパブリック IP アドレス>:8080/vodcallback/callback です。この例では、URL は http://10.10.10.101:8080/vodcallback/callback です。
AUDIT_SETTINGS_FLAG
はい
レビュー設定。デフォルト値は on です。有効な値:
on: 事前レビュー・事後公開。
off: 事前公開・事後レビュー。
package_name
はい
インターセプタ内の有効なパッケージ名。複数のパッケージ名はカンマで区切ります。デフォルト値は IOS,ANDROID,TEST,com.aliyun.apsara.svideo,com.aliyun.apsaravideo,com.aliyun.solution.longvideo です。
説明com.aliyun.apsara.svideo は、この例の Android クライアントのパッケージ名です。
iOS クライアントのバンドル識別子がすでに登録されている場合、クライアントの実行に失敗します。com.<会社名>.<プロジェクト名> のようなバンドル識別子をカスタマイズし、それを使用して iOS クライアントに署名し、package_name パラメーターに追加して有効なアクセスを確保する必要があります。
インターセプタは、有効なパッケージ名を持つモバイルアプリのみがサーバーにアクセスすることを許可します。そうでない場合、モバイルクライアントからのリクエストは失敗します。たとえば、「Request failed: forbidden (403)」というエラーメッセージが返されます。
Esc キーを押し、:wq! と入力して Enter キーを押し、変更を保存して終了します。
サービスを実行します。
コンパイルとパッケージング。
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226
mvn clean package -Dmaven.test.skip=true
説明Maven がインストールされていない場合は、apt install maven を実行してインストールしてください。
パッケージングに必要な時間は、サーバーの帯域幅とパフォーマンスによって異なります。この例では、最初のパッケージングには約 30 分かかります。
パッケージングが完了すると、sdk-api-0.0.1-SNAPSHOT.jar ファイルが /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target/ ディレクトリに生成されます。
JAR パッケージをデプロイし、サービスを開始します。
cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target
nohup java -jar sdk-api-0.0.1-SNAPSHOT.jar &
説明コマンドを実行すると、nohup プロンプトが表示されます。Enter キーを押して、プログラムをバックグラウンドで実行します。
コマンドを実行すると、現在のディレクトリに nohup.out ログファイルが生成されます。cat nohup.out コマンドを実行してログを表示します。ログに
start successが含まれている場合、サービスは正常に開始されています。ECS インスタンスのメモリが少なく、サーバーサイドのソースコードを再パッケージングしてデプロイする必要がある場合は、jps コマンドを実行して現在の JAR プログラムのプロセス ID (PID) を見つけます。次に、kill -9 <PID> を実行してプロセスを終了します。その後、ソースコードを再パッケージングしてデプロイできます。そうしないと、メモリ不足のためにパッケージングプロセスが失敗する可能性があります。