AWS および OBS ライブ ストリーミングのセットアップ
AWS ライブ ワークフローを作成し、OBS を構成し、DRM の再生をテストし、イベント後にリソースを停止します。
暗号化された動画と DRM ライセンスは別の経路で配信されます
CDN は暗号化された動画を配信します。バックエンドが視聴権限を確認し、DRM ライセンスサービスが対応デバイスでの復号を許可します。
- ストレージ / CDN
暗号化されたメディアをプレーヤーに配信します。
- お客様のバックエンド
視聴権限を確認し、DRM-X に再生の認可をリクエストします。
- DRM-X
再生の認可情報を検証し、DRM ライセンスリクエストを処理します。
- プレーヤー + デバイス
デバイスの DRM システムを使ってライセンスを取得し、暗号化されたメディアを再生します。
Trial および有料アカウントは、ライブ DRM チャンネルを作成できます。このワークフローでは、ストレージ接続は必要ありません。 AWS は、メディアのエンコード、パッケージ化、配信、および保持されるリソースに対して別途料金を請求します。
配信経路は OBS → AWS Elemental MediaLive → MediaPackage v2 → CloudFront → DRM-X プレーヤーです。DRM-X は SPEKE で暗号化キーを供給し、DRM License Token で各視聴者を認可します。
DRM-Xでライブイベントを作成します#
- カスタマー コンソールにサインインし、イベントを所有する組織と環境を選択します。
- Live events→New Live Channel を開きます。タイトルを入力します。新しいアカウントの場合は、Create new live content を選択し、一意の Content ID を入力します。あるいは、既存のライブ コンテンツを選択します。
- AWS リージョン、キーのローテーション間隔、DVR の保持時間を選びます。MediaLive、MediaPackage、SPEKE ブリッジは同じ AWS リージョンを使用してください。開始時の設定例は、ローテーションが600秒、DVR メディアの保持が7200秒です。
- チャンネルを作成します。ワンタイムオリジンシークレットを、統合 ID および個別の DASH および HLS リソース ID とともに安全に保存します。シークレットをプレーヤー、スクリーンショット、サポート チケット、またはパブリック リポジトリに決して置かないでください。
DRM-X チャネルはコンテンツと認証の構成です。 DRM-X Live Run の開始と AWS エンコーダーの開始は別の操作です。
AWS アカウントを設定する#
- 課金が有効になっている AWS アカウントと、CloudFormation、MediaLive、MediaPackage v2、API Gateway、IAM サービス ロール、および CloudFront を管理できる認定オペレーターを使用してください。リハーサルの前に、地域の割り当てと現在の料金を確認してください。
- コンソールから DRM-X AWS CloudFormation テンプレート をダウンロードします。
CreateMediaResources=false、DRM-X 統合/リソース ID、およびオリジン シークレットを使用してスタックを作成します。このテンプレートは、スコープ指定されたサービス ロールと IAM 承認済みの SPEKE ブリッジを作成します。 - DRM-X Configure AWS に、AWS アカウント ID とスタックの正確な
SpekeRoleArnを入力します。認証されたキー要求が成功できるように、DRM-X Live Run を開始します。 CreateMediaResources=trueで同じスタックを更新します。既存のシークレットとその他のパラメータを保持します。スタックが完了するまで待ちます。- スタック出力
DashOriginUrl、HlsOriginUrl、DashCloudFrontUrl、HlsCloudFrontUrlを対応する DRM-X フィールドにコピーします。視聴者は CloudFront URL を使用します。Originは CloudFront に制限されたままです。 - MediaLive RTMP push 入力を作成します。
/32入力セキュリティ ルールを持つ放送局の現在のパブリック IP のみを許可します。 ISP によって変更された IP アドレスには、そのルールを更新する必要があります。 - スタックの
MediaLiveRoleArnで MediaLive チャンネルを作成し、入力を接続し、スタックのチャンネル グループとチャンネル名を使用して MediaPackage v2 CMAF 出力グループを追加します。単一のパイプラインは制限付きテストに適しています。実稼働イベントには適切な冗長設計が必要です。
テンプレートは Widevine と PlayReady 向けに DASH-CENC、FairPlay 向けに HLS-CBCS を生成します。PRESET_AUDIO_1 と PRESET_VIDEO_3 の暗号化 Contract は、音声、SD、HD、UHD に別々のキーを割り当てます。PRESET_VIDEO_2 を使用する既存環境で別ポリシーの UHD を追加する場合は、まず暗号化 Contract の更新を確認してください。AWS 暗号化プリセットを参照してください。
OBS Studio を 4K 用に設定する#
- OBS プロフィールとシーン コレクションを複製します。わかりやすいライブイベント名を付けてください。
- 目的のビデオまたはキャプチャ ソースを追加します。実際に 3840×2160 であることを確認し、キャンバスに合わせて音声を確認します。リハーサル ファイルの場合は、ループを有効にします。未使用のウィンドウまたはデスクトップ キャプチャを非表示にします。
- Settings → Video でキャンバスと出力解像度を両方
3840x2160に設定し、この例では30fps を選びます。 - Output → Advanced → Streaming で、対応する H.264 ハードウェアエンコーダ(例:NVIDIA NVENC H.264)を選びます。CBR
18000 Kbps、キーフレーム間隔2 s、high profile を使用し、出力の再スケーリングは無効にします。NVENC では P5 と High Quality を開始時の設定とし、リハーサル中にエンコード負荷を確認してください。 - AAC オーディオと 48 kHz ステレオを使用します。不要なマイクとデスクトップ オーディオ ソースを無効にします。
- Stream で Custom を選びます。MediaLive の RTMP 入力 URL を、サーバー/アプリケーション URL と末尾のストリーム名に分けてください。末尾の部分を Stream Key に入力し、表示はマスクしたままにします。
ビデオとオーディオの合計ビットレートを超えるヘッドルームを備えた安定したアップロード接続を使用します。 OBS が持続的なネットワークまたはエンコードの低下を報告した場合は、イベントを視聴者に公開する前に修正してください。 OBS ハードウェア エンコードに関するガイダンス を参照してください。
適応出力の設定#
上記の OBS 設定の場合は、最大 20 Mbps の AVC/UHD MediaLive 入力仕様を使用してください。閉じた 2 秒の GOP と整列した 6 秒の CMAF セグメントを使用して、30 fps で次の H.264 出力を作成します。 AAC オーディオを独自のレンディションに保ちます。
| 解決策 | ビデオビットレートの例 | キーグループ |
|---|---|---|
| 3840×2160 | 16 Mbps | UHD |
| 1920×1080 | 5 Mbps | HD |
| 1280×720 | 2.5 Mbps | HD |
| 854×480 | 1.2 Mbps | SD |
| 640×360 | 0.7 Mbps | SD |
これらはリハーサル設定であり、品質を保証するものではありません。 4K チャンネルでは、小型ディスプレイ、制約のあるネットワーク、および DRM セキュリティ レベルで品質が制限されているデバイスに対しては、依然として低いレンディションが必要です。別のエンコーダーを選択する場合は、現在のMediaLive コーデックと解像度サポート を確認してください。
前回のイベント後にチャネルを再利用する#
エンコーダが動作していても、視聴者に最新のメディアが届いているとは限りません。MediaPackage の manifest-last-updated ヘッダーと公開されている解像度を確認してください。エンコーダやレンディションの変更後も再利用したチャネルが古いセグメントを返す場合は、AWS チャネル履歴のリセット手順に従ってください。
- 以前の DVR コンテンツを完全に削除できることを確認します。リセットはロールバック操作ではありません。
- OBS と MediaLive チャンネルを停止します。 MediaLive がアイドルになるまで待ちます。
- MediaPackage で、特定のテストチャンネルの履歴をリセットします。リセットが完了したら、少なくとも 30 秒待ちます。
- MediaLive を開始し、Running を待ってから、OBS を開始します。新しい DASH/HLS メディア、SPEKE 交換、デバイスの再生を再度確認してください。
PHP、Android、iOSにイベントを追加します#
すべての例で同じライブ Content ID と環境を使用します。 Site Key と Access Key を PHP サーバーに保存します。ホストされるサンプル イベントは aws-live-test-20260902、タイトルは 4K ライブ DRM テスト です。リハーサルの実行中にのみ使用できます。
PHP で、id、title、type: live の信頼できるプレイリスト エントリを追加します。再度サインインして、サンプルのセッション資格を更新します。バックエンドは、登録されたライブ マニフェストを解決し、カタログと一致しないクライアント指定の型を拒否します。
'playlist' => [
['id' => 'your-live-content-id', 'title' => 'My live event', 'type' => 'live'],
],AndroidにDrmXPlaylistItem("your-live-content-id", "My live event", "live")を追加し、再生準備時にそのコンテンツタイプを渡します。 Apple のサンプルでは、DrmXPlaylistItem(contentId: "your-live-content-id", title: "My live event", contentType: .live) を使用します。ライブ エントリはストリーミング用であり、オフライン ダウンロード キューに入れないでください。
開始、検証、停止#
- DRM-X Live Run を開始してから、AWS MediaLive チャネルを開始します。 MediaLive が実行中を報告するまで待ちます。
- OBS で配信を開始します。ビットレート、ドロップフレーム、音声、エンコーダの負荷を確認してください。
- 進行中の DASH/HLS マニフェストに予期される表現と DRM シグナリングが含まれていることを確認します。ブラウザー、Android Widevine、iPhone FairPlay でデコードされた画像と音声を確認します。少なくとも 1 回のキー ローテーションにわたってプレーヤーを接続したままにして、その後新しいビューアーをテストします。
- テストが終了したら、OBS ストリーミングを停止し、MediaLive チャンネルを停止し、DRM-X Live Run を停止します。 MediaLive がアイドルに戻ることを確認します。
OBS の停止だけでは AWS エンコーダの課金は止まりません。保持した入力、パッケージ化/ストレージ、リクエスト、配信の料金は別途確認してください。MediaLive の料金と AWS の請求画面を参照してください。
リハーサル確認: 2026 年 9 月 17 日#
チャネルは暗号化された3840×2160の動画と、それより低い解像度の適応レンディションを配信しました。実機の iPhone 11 は4Kをデコードし、600秒間隔のキーローテーション境界をまたぐ6分間の再生に合格しました。Samsung S24 Ultra は、報告された表示上限の1080pで10分間の再生に合格しました。両機種でローテーション後の新規参加も確認しました。結果はテストした機器、コーデック、ポリシーに限られます。
キャッシュされていないライブ マニフェストには、Android SDK 1.0.0-preview.13 以降を使用します。ダウンロードしたビデオを保存するには、既存のAndroid 評価アプリ をアップグレードします。更新された Apple サンプルでは、キー ID と IV を保持しながら、MediaPackage メタデータを FairPlay の 200 バイトの SPC 識別子の制限に合わせて圧縮しています。解像度設定により幅と高さの両方が指定されるため、アダプティブ再生は 4K に達します。
Safari ライブ再生
Safari では Web SDK 1.2.0-preview.13 以降を使用してください。 macOS、iOS、iPadOS で利用可能な場合はネイティブの Apple Media Keys が選択され、ライブおよび VOD プレイリストの変更全体でその API が維持されます。ライブ再生は MSE/SINF にフォールバックしません。これにより、MediaPackage がキーをローテーションした後に、古い初期化セグメント キーが要求される可能性があります。 HLS シグナリングでは正確な現在のキー ID と IV を保持します。
DRM-X SPEKE はコンパクトな KeyId/IV 資産識別子を発行するため、Safari は識別子のサイズ制限内で FairPlay ライセンスを要求できます。 DRM License Token は引き続き正確なコンテンツとキーを認証します。キー サービスを更新した後、依存する SPEKE ゲートウェイが実行されていることを確認します。ビデオを受信するエンコーダは、キーの配信が利用できない間は、新しい保護された出力を公開できません。
別の15分間の Safari テストでは、Mac と iPhone でキーのローテーションをまたいで再生が継続することを確認しました。iPhone はネイティブの Apple Media Keys を使用しました。Mac はローテーションの確認にモダン EME を使用し、その後、モダン EME の起動時に断続的なエラーが発生したため、ネイティブの Apple Media Keys で新規参加を確認しました。ブラウザの適応再生は Mac で720p、iPhone で480pに達しました。この結果は、ブラウザでの4K再生や、Mac が最後に使用した互換性経路でのローテーションを実証するものではありません。前述のネイティブアプリの4K結果は別のテストです。
リハーサルを再開する前に
- SPEKE エンドポイントに到達可能であり、コンソールに最近の交換が表示されていることを確認します。入力を受信するエンコーダーは、キーの配信が失敗した場合でも古いメディアを提供できます。
- VOD/オフライン メディア キャッシュをライブ マニフェスト ソースから分離してください。
- 実際のデコードされた寸法を確認します。 4K チャンネルを選択するだけでは、4K が再生できることは証明されません。
- このリハーサルは停止済みです。ライブのカタログ項目を再テストする前に、認可済みの新しい DRM-X Live Run、AWS エンコーダ、OBS 配信を開始してください。
DRM-X 6.0