1
Help us understand the problem. What are the problem?

posted at

OCI Digital Media Services をクイックスタートしてみた

OCI Digital Media Services 概要

OCI Digital Media Services(OCI DMS) は、2022年7月20日にリリースされたOracle Cloud Infrastructure(OCI)が提供する動画コンテンツの処理およびスケーラブルな配信を実現するためのフルマネージドサービスです。

OCI DMSは、OCI Media FlowOCI Media Streams の2つのサービスで構成され、OCI Object StorageやOCI AI ServiceなどのOCIのサービスと連携して動作します。OCI DMSの全体像と、各サービスの概要は以下の通りです

image.png

OCI Media Flow

OCI Media Flowは、動画コンテンツを処理するワークフローを構成するためのフルマネージドサービスです。この処理には、動画のトランスコード、サムネイル生成、A​​BRパッケージング、OCI AI Servicesとの統合を含みます

image.png

OCI Media Streams

OCI Media Streams は、HLSなどの形式でパッケージングされた動画ファイルを視聴者に配信するフルマネージドサービスです

image.png

0. 準備

OCI DMSを使うため、以下の準備作業をします

  • OCI環境の取得
  • OCI DMSで利用する各種リソースやポリシーを設定するコンパートメントの作成

1. OCI Media Flowの構成

1.1 ポリシーの設定

OCI DMSのリソースを管理するコンパートメントに、以下2つのポリシーを設定します。今回はクイックスタートのため、ユーザーが所属するグループに対して全てのOCI DMSのサービスmedia-familyを管理できる権限を付与します。さらに、変換前の動画ファイルはOCI Object Storageに登録する必要があるため、Object Storageobject-familyを管理できる権限も設定します

Allow group <グループ名> to manage media-family in compartment <コンパートメント名>
Allow group <グループ名> to manage object-family in compartment <コンパートメント名>

Media Flowのポリシー設定の詳細は、以下ドキュメントをご確認ください

1.2 Object Storage の準備

1.2.1 バケットの作成

Media Flowで利用する動画は、Object Storage の バケット(Bucket) で管理します。ここでは、変換前の動画を保管する入力バケット(InputBucket)と、変換後の動画を保管する出力バケット(OutputBucket)の2つを作成します

  1. OCIコンソールにサインインします

  2. 左上のメニューより ストレージオブジェクト・ストレージとアーカイブ・ストレージを選択
    image.png

  3. 事前に作成したコンパートメントを選択し、バケットの作成 をクリックします
    image.png

  4. バケット名を入力し、作成をクリックします。ここでは InputBucket で作成します
    image.png

  5. 同じ手順を繰り返し、出力バケットを作成します。ここでは OutputBucket で作成します

  6. 作成後は2つのバケット InputBucketOutputBucketが表示されます
    image.png

1.2.2 動画ファイルの登録

変換する前の動画ファイルを InputBucketに登録します。ここではmp4の動画ファイルを登録します

  1. InputBucketをクリックします

  2. オブジェクトのアップロードをクリックします
    image.png

  3. ファイルを選択をクリックし、ローカル環境から任意のmp4形式の動画ファイルを選択し、アップロード をクリックします
    image.png

  4. InputBucketに動画ファイルが登録されます。この動画を変換前の入力動画として使います
    image.png

1.3 メディアワークフローの作成

Media Flowで動画を変換する一連の処理を、メディア・ワークフロー として定義します。メディア・ワークフローは、OCI管理コンソール、API、CLI等から作成できます。今回はOCI管理コンソールより作成します

  1. 左上のメニュー→アナリティックスとAIメディア・フローをクリックします
    image.png

  2. 事前に作成したコンパートメントを選択し、Create Media Workflow をクリックします
    image.png

  3. Create Media Workflowの画面が開きます。画面下部の Configure Tasks for Media Workflowより、ワークフロー内での一連の処理(タスク)を定義します
    image.png

  4. Inputタスクで、変換前の動画ファイルを取り込むObject Storageのバケットを指定します。ここではInputBucketを選択します
    image.png

  5. Transcodeタスクでトランスコード処理を定義します。今回は以下の通りに作成します(ほぼデフォルト設定のまま)

    • Transcode Type: Standard
    • Transcode Option
      • Package type: HLS
      • Segment length: 6
      • Video codec: H.264
      • Audio codec: AAC
    • Ladder: (デフォルトのまま。1080p/720p/480p/360pの4つの画質が作成)
    • Task output: Transcode/
      image.png
  6. OCI AI Services は無効(Disable)のままとします
    image.png

  7. Thumbnailタスクで、サムネイル画像の作成処理を定義します。Task outputに Thumbnail/ を入力し、その他はすべてデフォルト設定のままとします
    image.png

  8. Outputタスクで、変換後の動画ファイルを取り込むObject Storageのバケットを指定します。ここでは OutputBucket を選択します
    image.png

  9. Streamingタスクは、無効(Disable)のままとします

  10. Save をクリックします

  11. メディア・ワークフローの名前を入力し、Saveをクリックします(ここでは Test Media Workflow と設定)
    image.png

  12. メディア・ワークフローが作成されます。Statusが Active であることを確認します
    image.png

1.4 メディアフロージョブの実行

作成したメディアワークフローを実行し、動画ファイルを変換します。なお、メディア・ワークフローの実行単位を メディアフロージョブ(Job) と言います

  1. 前の手順で作成した Test Media Workflow を開き、Run Jobをクリックします
    image.png

  2. Select file from Object Storeで、InputBucketが選択されていることを確認し、事前に登録した変換前の動画を選択します

  3. 続けて、Select save locationで、OutputBucketが選択されていることを確認します。Job output prefixoutput_1/ に変更します

  4. 最後に Run Job をクリックします
    image.png

  5. ジョブが開始されます。ジョブの実行時間は、システム全体の負荷、ユーザーが同時実行したジョブの数、動画ファイルの大きさやトランスコードのパターンにより異なります。しばらくすると、ジョブが完了します
    image.png

  6. 画面をスクロールすると、ワークフロー内のタスクの実行結果やトランスコード後のインデックスファイルや動画ファイル出力された内容Job outputを確認できます
    image.png

  7. Job outputBucket OutputBucket のリンクをクリックすると、Object Storage のOutputBucket が開きます
    image.png

2. OCI Media Streamsの構成

OCI Media Streams は、HLS(HTTP Live Streaming)の形式でパッケージ化された動画コンテンツを視聴者に配信するフルマネージドサービスです。

2.1 ポリシーの設定

OCI Media Streamsは、Media Flowで作成した各種リソースを利用します。そのために、以下2つのポリシーを、DMSの各リソースを管理するコンパートメントに設定します。

Allow service mediaservices to read object-family in compartment <コンパートメント名>
Allow service mediaservices to read media-family in compartment <コンパートメント名>

Media Streamsのポリシー設定の詳細は、以下ドキュメントをご確認ください

2.2 Distribution Channel の作成

Distribution Channel(配信チャネル)は、ユーザーに動画をストリーミング配信するチャネルで、視聴者に対して動画を配信する論理的なエンドポイントとなります

  1. 左上のメニュー→アナリティックスとAIメディア・ストリームをクリックします
    image.png

  2. 事前に作成したコンパートメントを選択し、Create Distribution Channel をクリックします
    image.png

  3. Nameを入力します(ここでは Test Distribution Channel と入力)。続けて、CDNOCI EDGEを選択します。最後に Create をクリックします
    image.png

  4. Distribution Channelが作成されます。Distribution Channelを作成すると、配信チャネル毎にユニークなドメイン名が割り当てられます
    image.png

Distribution Channel作成時、CDNで OCI EDGE を選択すると、OCIがエッジとなり、視聴者に対して動画コンテンツが配信されます。AKAMAI を選択すると、Akamaiがエッジ、OCIをオリジンとなり、視聴者に対して動画コンテンツが配信されます。なお、Akamaiは、お客様にてご準備いただく必要があります

2.3 Packaging Configuration の作成

Distribution Channel内のパッケージング処理を構成します

  1. 作成したDistribution Channelを開き、左下のリソースより、Packaging Configurationsをクリックします
    image.png

  2. Create Packaging Configuration をクリックします
    image.png

  3. 以下の通りに入力し、Createをクリックします

    • Name: Test Packaging Configuration
    • Format: HLS
    • Segment size in seconds: 20
    • Encryption algorithm: NONE
    • KMS Key Id: (未入力)
      image.png
  4. Test Distribution Channel 内に Test Packaging Configuration が作成されます
    image.png

2.4 Distribution ChannelにPlaylist Assetを取り込む

作成したDistribution Channelに配信する動画コンテンツ(HLS形式)を取り込みます。取り込む動画コンテンツは、Media Flowでトランスコードしたファイルを利用します

  1. 作成した Test Distribution Channel を開き、左下のリソースの Playlist Assets をクリックします
    image.png

  2. Ingest Playlist Asset をクリックします
    image.png

  3. バケットで OutputBucket を選択します。続けて、output_1 > Transcodeを開き、master.m3u8 を選択します。最後に Create をクリックします
    image.png

  4. 取り込み処理が開始されます。しばらくすると、Ingest Job Statusが Succeeded に変わると、取り込みが完了します
    image.png

2.5 確認

取り込みが完了した動画コンテンツが正しくストリーミング配信できるか?を確認します。なお、動画の再生を確認するには、hls.jsなどのJavaScriptライブラリを利用したHLSクライアントの実装が必要です。今回は、以下のサイトを利用します

  1. 前の手順で取り込んだ動画コンテンツ(output_1/Transcode/master.m3u8)を開きます

  2. Preview URLの Packaging を選択します。ここでは、前の手順で作成した Test Packaging Configuration を選択します
    image.png

  3. Preview URLが生成されます。コピーをクリックします
    image.png

  4. 別のブラウザで、https://hls-js.netlify.app/demo/ を開きます
    image.png

  5. コピーしたURLを入力し、Applyをクリックします
    image.png

  6. 動画が再生されることを確認します
    image.png

  7. 画面下部の Currently played level に、Media Flowのメディアワークフロー作成時のTranscodeタスクのLadderで指定した画質(360p/480p/720p/1080p)が選択できます
    image.png

おわりに

以上で OCI Digital Media Services のクイックスタートは完了です。とても簡単に使い始めることができます。今回は最もシンプルなTransocode Type= Standard を選択しましたが、Speed OptimizedQuality Optimized なども選択可能です。

さらに、OCI AI Services との連携機能を有効化すると、動画内の音声の文字起こし(English、Portuguese、Spanishをサポート)、動画内のオブジェクト検出やテキスト検出(Englishのみサポート)、も可能となります。

お時間ありましたら、是非一度お試しいただければ幸いです

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?