OCI Digital Media Services 概要
OCI Digital Media Services(OCI DMS) は、2022年7月20日にリリースされたOracle Cloud Infrastructure(OCI)が提供する動画コンテンツの処理およびスケーラブルな配信を実現するためのフルマネージドサービスです。
OCI DMSは、OCI Media Flow と OCI Media Streams の2つのサービスで構成され、OCI Object StorageやOCI AI ServiceなどのOCIのサービスと連携して動作します。OCI DMSの全体像と、各サービスの概要は以下の通りです
OCI Media Flow
OCI Media Flowは、動画コンテンツを処理するワークフローを構成するためのフルマネージドサービスです。この処理には、動画のトランスコード、サムネイル生成、ABRパッケージング、OCI AI Servicesとの統合を含みます
OCI Media Streams
OCI Media Streams は、HLSなどの形式でパッケージングされた動画ファイルを視聴者に配信するフルマネージドサービスです
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つを作成します
-
OCIコンソールにサインインします
-
同じ手順を繰り返し、出力バケットを作成します。ここでは
OutputBucket
で作成します
1.2.2 動画ファイルの登録
変換する前の動画ファイルを InputBucket
に登録します。ここではmp4の動画ファイルを登録します
-
InputBucket
をクリックします
1.3 メディアワークフローの作成
Media Flowで動画を変換する一連の処理を、メディア・ワークフロー として定義します。メディア・ワークフローは、OCI管理コンソール、API、CLI等から作成できます。今回はOCI管理コンソールより作成します
-
Create Media Workflowの画面が開きます。画面下部の Configure Tasks for Media Workflowより、ワークフロー内での一連の処理(タスク)を定義します
-
Input
タスクで、変換前の動画ファイルを取り込むObject Storageのバケットを指定します。ここではInputBucket
を選択します
-
Transcode
タスクでトランスコード処理を定義します。今回は以下の通りに作成します(ほぼデフォルト設定のまま) -
Thumbnail
タスクで、サムネイル画像の作成処理を定義します。Task outputに Thumbnail/ を入力し、その他はすべてデフォルト設定のままとします
-
Output
タスクで、変換後の動画ファイルを取り込むObject Storageのバケットを指定します。ここでは OutputBucket を選択します
-
Streaming
タスクは、無効(Disable)のままとします -
Save をクリックします
-
メディア・ワークフローの名前を入力し、Saveをクリックします(ここでは Test Media Workflow と設定)
1.4 メディアフロージョブの実行
作成したメディアワークフローを実行し、動画ファイルを変換します。なお、メディア・ワークフローの実行単位を メディアフロージョブ(Job) と言います
-
Select file from Object Store
で、InputBucketが選択されていることを確認し、事前に登録した変換前の動画を選択します -
続けて、
Select save location
で、OutputBucketが選択されていることを確認します。Job output prefix
を output_1/ に変更します -
ジョブが開始されます。ジョブの実行時間は、システム全体の負荷、ユーザーが同時実行したジョブの数、動画ファイルの大きさやトランスコードのパターンにより異なります。しばらくすると、ジョブが完了します
-
画面をスクロールすると、ワークフロー内のタスクの実行結果やトランスコード後のインデックスファイルや動画ファイル出力された内容
Job output
を確認できます
-
Job output
の Bucket OutputBucket のリンクをクリックすると、Object Storage のOutputBucket が開きます
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(配信チャネル)は、ユーザーに動画をストリーミング配信するチャネルで、視聴者に対して動画を配信する論理的なエンドポイントとなります
-
Name
を入力します(ここでは Test Distribution Channel と入力)。続けて、CDN
で OCI EDGEを選択します。最後に Create をクリックします
-
Distribution Channelが作成されます。Distribution Channelを作成すると、配信チャネル毎にユニークなドメイン名が割り当てられます
Distribution Channel作成時、CDNで OCI EDGE を選択すると、OCIがエッジとなり、視聴者に対して動画コンテンツが配信されます。AKAMAI を選択すると、Akamaiがエッジ、OCIをオリジンとなり、視聴者に対して動画コンテンツが配信されます。なお、Akamaiは、お客様にてご準備いただく必要があります
2.3 Packaging Configuration の作成
Distribution Channel内のパッケージング処理を構成します
-
作成したDistribution Channelを開き、左下のリソースより、Packaging Configurationsをクリックします
-
以下の通りに入力し、Createをクリックします
-
Test Distribution Channel 内に Test Packaging Configuration が作成されます
2.4 Distribution ChannelにPlaylist Assetを取り込む
作成したDistribution Channelに配信する動画コンテンツ(HLS形式)を取り込みます。取り込む動画コンテンツは、Media Flowでトランスコードしたファイルを利用します
-
作成した Test Distribution Channel を開き、左下のリソースの Playlist Assets をクリックします
-
バケットで OutputBucket を選択します。続けて、
output_1 > Transcode
を開き、master.m3u8 を選択します。最後に Create をクリックします
-
取り込み処理が開始されます。しばらくすると、Ingest Job Statusが Succeeded に変わると、取り込みが完了します
2.5 確認
取り込みが完了した動画コンテンツが正しくストリーミング配信できるか?を確認します。なお、動画の再生を確認するには、hls.jsなどのJavaScriptライブラリを利用したHLSクライアントの実装が必要です。今回は、以下のサイトを利用します
-
前の手順で取り込んだ動画コンテンツ(
output_1/Transcode/master.m3u8
)を開きます -
Preview URLの
Packaging
を選択します。ここでは、前の手順で作成した Test Packaging Configuration を選択します
-
別のブラウザで、https://hls-js.netlify.app/demo/ を開きます
-
画面下部の Currently played level に、Media Flowのメディアワークフロー作成時の
Transcode
タスクのLadder
で指定した画質(360p/480p/720p/1080p)が選択できます
おわりに
以上で OCI Digital Media Services のクイックスタートは完了です。とても簡単に使い始めることができます。今回は最もシンプルなTransocode Type
= Standard を選択しましたが、Speed Optimized や Quality Optimized なども選択可能です。
さらに、OCI AI Services との連携機能を有効化すると、動画内の音声の文字起こし(English、Portuguese、Spanishをサポート)、動画内のオブジェクト検出やテキスト検出(Englishのみサポート)、も可能となります。
お時間ありましたら、是非一度お試しいただければ幸いです