DRM-X 5.0 暗号化 SDK ユーザーガイド
技術担当者向け — 自分のサーバー / Web サイトでコマンドラインから暗号化ツールを呼び出して動画を暗号化する方法
対象:DRM-X 5.0(インターナショナル版 com / 中国版 cn)· プラットフォーム:Windows / Linux x86_64 / macOS 11.0+
目次
1SDK パッケージの内容
DRM-X5.0_Encryption_SDK アーカイブを展開すると、ディレクトリには以下のファイルが含まれています:
| ファイル | 説明 |
|---|---|
| drm-x5-encrypt-sdk.exe | Windows 暗号化プログラム(x64) |
| drm-x5-encrypt-sdk-linux-x86_64 | Linux 暗号化プログラム(x86_64、静的リンク — 共有ライブラリの依存関係なし。CentOS / Ubuntu などで直接実行可能) |
| drm-x5-encrypt-sdk-macos-x86_64 | macOS 暗号化プログラム(Intel チップ、macOS 11.0 以降) |
| drm-x5-encrypt-sdk-macos-arm64 | macOS 暗号化プログラム(Apple Silicon M シリーズチップ、macOS 11.0 以降) |
| cmd.txt | 3 つのプラットフォーム向けのコマンドライン呼び出し例 |
| GetPackagerEncryptedParams.php | Web サービスを呼び出して暗号化パラメータを取得する実行可能な PHP デモ(セクション 4.4 参照) |
コマンドライン引数は 3 つのプラットフォームすべてで同一です — 異なるのはプログラムファイル名だけです。
2暗号化ワークフローの概要
ステップ 1 · 暗号化パラメータを取得する
GetPackagerEncryptedParams を呼び出して ProfileEncryptedParam(つまり -profile 暗号化文字列 — 一度取得したらキャッシュして再利用する)を取得します。入力 / 出力パスの Base64 値はお客様のプログラムがローカルでエンコードします。それらのために Web サービスを呼び出す必要はありません。
ステップ 2 · コマンドラインを組み立てる
取得した -profile とローカルで Base64 エンコードしたパスを、暗号化プログラムの 4 つの引数に設定します:-server_domain / -profile / -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded
ステップ 3 · 暗号化を実行する
サーバー上でコマンドラインプログラムを実行して暗号化を行います。
ステップ 4 · 暗号化ファイルを公開する
出力ディレクトリから暗号化ファイルをアップロード / 公開します。ライセンスはユーザーがコンテンツを再生するときに DRM-X 5.0 サーバーによって発行されます。
なぜ最初に DRM-X 5.0 Web サービスを呼び出すのか?暗号化プログラムの -profile 引数は、ライセンスプロファイルの数値 ID ではありません — お客様のアカウントに紐づけられた暗号化文字列(ProfileEncryptedParam)です。この文字列はローカルで生成できません。Web サービスを通じてのみ取得できます。これは ProfileID に 1 対 1 で対応し、一度取得すればキャッシュして再利用できます — ファイルごとに Web サービスを呼び出す必要はありません。一方、入力 / 出力パスの Base64 値は、お客様のプログラムでローカルにエンコードする必要があります(セクション 6 参照)— それらのために Web サービスを呼び出す必要はありません。
3前提条件
3.1 DRM-X 5.0 アカウント情報(DRM-X 管理コンソールから取得)
| 項目 | 目的 |
|---|---|
| AdminEmail | 管理者のメールアドレス。Web サービス認証に使用します。Advanced アカウント以上が必要です。 |
| WebServiceAuthStr | Web サービス統合用の認証文字列。管理コンソールの「Website Integration Parameter Settings」で確認できます。 |
| ProfileID | 数値のライセンスプロファイル ID — この暗号化にどのライセンスプロファイルを使用するかを指定します。 |
3.2 サーバー環境の要件
| プラットフォーム | 要件 |
|---|---|
| Windows | Windows 7 / Server 2008 R2 以降(x64) |
| Linux | x86_64 アーキテクチャ(CentOS 7+ / Ubuntu 16.04+ およびその他の主要ディストリビューション)。静的リンク — インストールが必要な依存関係はありません。 |
| macOSmacOS | macOS 11.0 以降、Intel または Apple Silicon チップ |
| サーバー側統合(オプション) | PHP 7.4+(soap および openssl 拡張機能を有効化)、Web サービスを自動的に呼び出すため |
セキュリティに関する注意: WebServiceAuthStr はアカウントキーと同等です。サーバー側にのみ保存する必要があります — フロントエンドの Web ページ、クライアントソフトウェア、公開リポジトリには絶対に置かないでください。
4ステップ 1:DRM-X 5.0 Web サービスを呼び出して暗号化パラメータを取得する
4.1 Web サービス情報
| 項目 | 値 |
|---|---|
| インターナショナルエンドポイント | https://5.drm-x.com/haihaisoftlicenseservice.asmx |
| 中国エンドポイント | https://5.drm-x.cn/haihaisoftlicenseservice.asmx |
| メソッド名 | GetPackagerEncryptedParams |
| プロトコル | SOAP 1.1 (POST) |
| SOAPAction | http://tempuri.org/ASPNET.StarterKit.Commerce/HaihaisoftLicenseService/GetPackagerEncryptedParams |
エンドポイントはアカウントのエディションと一致する必要があります:インターナショナルアカウントは 5.drm-x.com を使用します(コマンドライン:-server_domain com)。中国アカウントは 5.drm-x.cn を使用します(コマンドライン:-server_domain cn)。間違ったエディションを使用すると、認証が失敗するか、暗号化ファイルが再生できなくなります。
4.2 リクエストパラメータ
| パラメータ | 必須 | 説明 |
|---|---|---|
| AdminEmail | はい | DRM-X 5.0 管理者のメールアドレス |
| WebServiceAuthStr | はい | Web サービス認証文字列 |
| ProfileID | はい | ライセンスプロファイル ID(数値、エンコード不要) |
| Input | はい | 暗号化するファイルのフルパス(プレーン文字列、エンコード不要) |
| Output | はい | 暗号化された出力ファイルのフルパス |
| ProfileEncryptedParam / enc_Input / enc_Output | いいえ | 予約フィールド — 通常は空の文字列を渡します |
4.3 レスポンスフィールドとコマンドライン引数の対応(核心)
| レスポンスフィールド | コマンドライン引数 | 説明 |
|---|---|---|
| ProfileEncryptedParam | -profile | お客様のアカウントに紐づけられた暗号化ライセンスプロファイル文字列(URL セーフ Base64、- と _ を含む)。Web サービスが返した値を使用する必要があります — 数値の Profile ID を渡さず、自分でエンコードしないでください。 ProfileID ごとに一度取得するだけでよく、その後は長期的にキャッシュして再利用できます — ファイルごとに Web サービスを呼び出す必要はありません。 |
| enc_Input | -input_file_utf8_base64_encoded | UTF-8 で Base64 エンコードされた入力パス。プログラム内でローカルにエンコードすることを推奨します(PHP:base64_encode()、他の言語では、まず UTF-8 バイトに変換してから Base64 — セクション 6 参照)。このために Web サービスを呼び出す必要はありません。サービスが返す enc_Input 値も同様に機能します。 |
| enc_Output | -output_file_utf8_base64_encoded | UTF-8 で Base64 エンコードされた出力パス。ローカルでエンコードすることを推奨します(上記と同じ方法)。サービスが返す enc_Output 値も機能します。 |
| GetPackagerEncryptedParamsResult | — | ステータス / メッセージテキスト。注意: |
4.4 呼び出し例(PHP / SoapClient)
この Web サービスは標準の SOAP 1.1 サービスであり、どの言語からでも同じ統一された方法で呼び出すことができます:4.1 に記載されたエンドポイントに SOAP エンベロープを POST するか(または ?WSDL から SOAP クライアントに自動生成させる)、4.2 のパラメータを渡し、レスポンスの 4.3 の 3 つのフィールドを読み取ります。言語別の一般的な SOAP クライアントライブラリ:
| 言語 / プラットフォーム | 一般的な SOAP クライアント |
|---|---|
| PHP | 組み込みの SoapClient クラス(このガイドで使用、WSDL モード) |
| Java | JAX-WS(wsimport)、Apache Axis2、Apache CXF |
| Python | zeep、suds |
| C# / .NET | Visual Studio の「Add Service Reference」、または SvcUtil |
| Node.js | soap パッケージ |
次の例では PHP の SoapClient を使用して完全な呼び出しを示します。コードをサーバー上に get_params.php として保存して実行してください(PHP 7.4+ で soap 拡張機能を有効化)— 3 つのコマンドライン引数の値が出力されます:
SoapClient に関する注意:
- php-soap 拡張機能をインストールして有効にする必要があります(Windows では php.ini の extension=soap をコメント解除、Linux では php-soap パッケージをインストール)。
- 認証失敗などのビジネスエラーは SoapFault をスローしません。サービスは引き続き HTTP 200 で整形されたレスポンスを返し、エラーテキストは GetPackagerEncryptedParamsResult にあります。4.3 に記載されているように、常にフィールド値を確認して成功を判断してください。
- デバッグには var_dump($client->__getLastRequest()) を使用して、実際のリクエストエンベロープを確認します。
5ステップ 2:暗号化コマンドを実行する
5.1 初回使用時(Linux / macOS)
ターミナルでプログラムのディレクトリに移動し、まず実行権限を付与します:
5.2 単一ファイル暗号化コマンドテンプレート
Windows (cmd / PowerShell):
Linux:
macOS:
5.3 引数のリファレンス
| 引数 | 説明 |
|---|---|
| -server_domain | 対象 DRM-X 5.0 サーバーエディション:com = インターナショナル、cn = 中国。アカウントのプラットフォームとステップ 4 で使用した Web サービスエンドポイントと一致する必要があります。 |
| -profile | 暗号化ライセンスプロファイル文字列 — Web サービスが返した完全な ProfileEncryptedParam 値(URL セーフ Base64、- と _ を含む)。数値 ID を渡さないでください。自分で Base64 エンコードしないでください。末尾の文字を追加または削除しないでください。ProfileID ごとに一度取得するだけでよく、その後は長期的にキャッシュして再利用できます。 |
| -input_file_utf8_base64_encoded | UTF-8 で Base64 エンコードされた入力ファイルパス。ローカルでエンコードすることを推奨します(例:PHP の base64_encode($path)、セクション 6 参照)。サービスが返す enc_Input 値も機能します。絶対パスと相対パスの両方がサポートされ、パスには非 ASCII 文字やスペースを含めることができます。 |
| -output_file_utf8_base64_encoded | UTF-8 で Base64 エンコードされた出力ファイルパス。ローカルでエンコードすることを推奨します(上記と同じ方法)。サービスが返す enc_Output 値も機能します。出力の親ディレクトリは既に存在している必要があります — プログラムはそれを作成しません。 |
5.4 完全な例
Windows:
ここで RDpcSmFzb25c... は D:\Jason\input\01-testVideo.mp4 にデコードされます。
Linux:
これは ./input/01-linux-encrypt-video.mp4 → ./output/01-linux-encrypt-video2_P.mp4 を暗号化します。
5.5 結果の確認
- プログラムが終了したら、出力ディレクトリに暗号化ファイルが作成されたことを確認します(区別するために _P サフィックスを推奨、例:course01_P.mp4)。
- 暗号化には DRM-X サーバーへのネットワークアクセスが必要です。ファイアウォール / セキュリティグループが 5.drm-x.com または 5.drm-x.cn へのアウトバウンドアクセスを許可していることを確認してください。
- 本番コンテンツをバッチ暗号化する前に、小さなテスト動画で完全なワークフローを検証することを推奨します。
6入力 / 出力パスの Base64 エンコード(ローカルエンコードを推奨)
推奨される方法: -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded の値を、お客様自身のプログラムでエンコードして生成します — ファイルごとに Web サービスを呼び出す必要はありません。エンコード規則:まずパス文字列を UTF-8 バイトに変換し、次に標準の Base64 エンコードを適用します。注意:ソースファイルは UTF-8 で保存する必要があります(これは特に非 ASCII パスで重要です。Windows では ANSI / GBK エンコードを使用しないでください)。言語別の例:
| 言語 / 環境 | 例(パス /home/video/course01.mp4 のエンコード) |
|---|---|
| PHP | base64_encode('/home/video/course01.mp4') |
| Java | Base64.getEncoder().encodeToString(path.getBytes(StandardCharsets.UTF_8)) |
| Python | base64.b64encode(path.encode('utf-8')).decode() |
| C# / .NET | Convert.ToBase64String(Encoding.UTF8.GetBytes(path)) |
| Node.js | Buffer.from(path, 'utf8').toString('base64') |
| Linux / macOS shell | printf '%s' "/home/video/course01.mp4" | base64 |
| Windows PowerShell | [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("C:\video\course01.mp4")) |
再度強調します:-profile 引数をローカルで生成する方法はありません。これはお客様のアカウントに紐づけられた暗号化文字列であり、GetPackagerEncryptedParams Web サービスを通じてのみ取得できます。
7サーバー側自動化の例
「パラメータの取得 + 暗号化プログラムの呼び出し」を連鎖させることで、Web サイトのバックオフィスからワンクリック暗号化、またはスケジュールされたバッチ暗号化が可能になります。次の PHP の例は Linux 暗号化プログラムを呼び出します(セクション 4.4 のコードの続き。実行時には $profile をまずキャッシュから読み取り、キャッシュされた値が存在しない場合にのみ 4.4 の Web サービスを呼び出す必要があります):
シェルバッチ暗号化スクリプトの例(Linux — パスをローカルでエンコードしてから各ファイルを暗号化):
推奨される方法:特定の ProfileID の ProfileEncryptedParam を Web サービス経由で一度取得し、再利用のためにキャッシュします — 暗号化ファイルごとに Web サービスを呼び出さないでください。サーバー上でパスを Base64(UTF-8)エンコードして enc_Input / enc_Output の相当値を直接生成します(PHP の場合:base64_encode($path)、セクション 6 参照)— Web サービス呼び出しは不要です。バッチ暗号化の際は、帯域幅と CPU の飽和を避けるために同時実行数を制限してください(例:サーバーあたり 2〜4 の暗号化プロセス)。
8よくある質問(FAQ)
Q1:Web サービスが「Your XML web service login info is not correct...」を返す
AdminEmail または WebServiceAuthStr が正しくありません。DRM-X 管理コンソールで両方を再確認してください。値の前後にスペースがないことを確認してください。また、このエラーでも HTTP ステータスコードは 200 のままです — プログラムは HTTP ステータスコードではなく、レスポンスフィールドを検査して成功を判断する必要があります。
Q2:数値 ID(例:1001)を -profile に直接渡すとエラーになる
-profile は Web サービスが返した完全な ProfileEncryptedParam 暗号化文字列でなければなりません — 数値の Profile ID ではありません。数値 ID は Web サービスを呼び出すときにのみ使用されます。
Q3:パスに非 ASCII 文字やスペースが含まれていて暗号化が失敗する?
パスは Base64 として転送され、非 ASCII 文字とスペースは完全にサポートされています。重要なのは、エンコードに UTF-8 を使用する必要があることです。Windows では、メモ帳 / cmd がデフォルトで ANSI(GBK)エンコードを使用する場合があり、Base64 デコード後にパスが破損します。セクション 6 に記載されているように、プログラムでパスを UTF-8 としてエンコードしてください(PHP ソースファイルが UTF-8 で保存されている場合、通常の base64_encode() がそのまま機能します。レガシーな GBK エンコード文字列は、エンコード前に iconv('GBK', 'UTF-8', $path) または mb_convert_encoding() で変換できます)。
Q4:プログラムが出力失敗を報告する / 出力ディレクトリが見つからない
出力ファイルの親ディレクトリを事前に作成する必要があります(例:mkdir -p ./output)。また、プログラムを実行するユーザーがそのディレクトリへの書き込み権限を持っていることを確認してください。
Q5:macOS がプログラムを「cannot be opened because the developer cannot be verified」と表示する
プログラムは Apple の公証を受けていないため、Gatekeeper が初回起動をブロックします。次のいずれかの方法を選んでください: ① ターミナルで xattr -d com.apple.quarantine ./drm-x5-encrypt-sdk-macos-arm64 を実行して隔離フラグを削除する; ② またはシステム設定 → プライバシーとセキュリティで「このまま開く」をクリックする。
Q6:Linux でプログラムが実行できない(Permission denied またはフォーマットエラー)
まず chmod +x drm-x5-encrypt-sdk-linux-x86_64 を実行してください。「cannot execute binary file」が表示される場合は、サーバーが x86_64 であることを確認してください(uname -m)。現在のパッケージは x86_64 ビルドのみを提供しています。ARM サーバーについては Haihaisoft にお問い合わせください。
Q7:com と cn のどちらを使用すべきですか?間違った方を選ぶとどうなりますか?
DRM-X アカウントのプラットフォームと一致する必要があります:インターナショナルアカウントは com を使用し(5.drm-x.com を呼び出す)、中国アカウントは cn を使用します(5.drm-x.cn を呼び出す)。不一致は認証失敗、またはプラットフォームに一致しない暗号化パラメータを引き起こします。
Q8:暗号化ファイルを確認するにはどうすればよいですか?
DRM-X 5.0 デモプレーヤー / 統合プレーヤーで出力ファイルを開き、確認します:ライセンスなしでは再生がブロックされ、管理コンソールでテストユーザーを承認すると正常に再生されます。大量の本番暗号化の前に小規模で検証してください。
9注意事項とベストプラクティス
- 元のファイルを保持する:出力を新しい場所または新しいファイル名(例:_P サフィックス付き)に書き込み、元の動画が上書きされないようにします。
- 小さく始めてから大きく:新しいプロファイルや新しいサーバーを初めて使用する場合、バッチ処理の前に短いテスト動画で「パラメータ取得 → 暗号化 → ライセンス付き再生」の完全なフローを実行してください。
- 引数を手で編集しない: -profile は Base64 暗号化文字列です — 完全にコピーしてください(余分な前後のスペースや行折り返しによる切り捨てがないように)。
- 認証文字列を秘密に保つ: WebServiceAuthStr はサーバー側の設定にのみ属します。GetPackagerEncryptedParams.php のようなデモ Web ツールを公開インターネットに配備しないでください。
- ネットワーク要件:暗号化中、サーバーは DRM-X サーバー(インターナショナル 5.drm-x.com / 中国 5.drm-x.cn)に到達できる必要があります。ファイアウォールがある場合はアウトバウンドポート 443 を許可してください。
その他の DRM-X 5.0 チュートリアル
DRM-X 5.0 紹介ビデオDRM-X 5.0は新世代の暗号化ソフトウェアプラットフォームです。Haihaisoftは、DRM-X 5.0の紹介、動画暗号化チュートリアル、Webページ暗号化チュートリアル、HTML5動画プレーヤーの埋め込み方法など、一般的なDRM-X 5.0ビデオデモチュートリアルを提供しています。
今すぐ視聴
DRM-X 5.0 ZJGet よくある質問(FAQ)ZJGetブラウザの使用に関するよくある質問(FAQ)。このセクションでは、最も役立つQ&Aをまとめ、遭遇する可能性のある障害を克服するのに役立ちます。
今すぐ視聴

