Media Framework の概要

UE 4 の Media Framework を使った映像再生の主要機能の概要

Choose your operating system:

Windows

macOS

Linux

Media Framework はアセットをいくつか使ってアンリアル エンジン (UE4) 内で映像を再生します。映像は Media Player アセット内でスクラブ再生、ポーズ、巻き戻しをしたり、また C++ または ブループリント ビジュアル スクリプティング による調節も可能です。 映像の再生レベルにサーフェスを作る、あるいは映像再生をプレイヤーが調節できるように UMG インターフェースで UI エレメントを作成するには、まず Media Source を指定してエンジンがメディア アセットを探せるようにする必要があります。

  • メディア ソースの種類

Media Source アセットにはメディアのソースを定義するものがあります。 映像をプレイする前にソースの定義が必要な場合があります。それは、プロジェクトの一部としてファイルがインクルードされている、ウェブサイトからメディアをストリーミングする、プラットフォーム固有のメディアを使用する場合です。 [Add New (新規追加)] ボタンをクリックし [Media] セクションで使用したいソースタイプを指定して、 コンテンツ ブラウザ に Media Source を追加することができます。

MediaSource.png

File Media Source アセット

MediaSource_File.png

File Media Source アセットは、デバイスまたは共有ローカル ネットワーク ファイルに格納されたメディア ファイルに対して使用します。 [File Path] セクションで、メディア ファイルの格納場所を指定します。

メディア ファイルはどこにでも存在できますが、通常はプロジェクトの 「Content/Movies」 フォルダに移してメディア ファイルとして指定するのがグッド プラクティスです。 こうしておくと、確実にメディアをプロジェクトで正しくパッケージ化することができます。この場所以外のファイルを指定すると、黄色いエクスクラメーション マーク (上図) の警告が表示されます。

このソース アセットは、([Advanced Options] セクションの) [Precache File] オプションを有効にして、プレイ前にメディア ファイル全体をメモリにロードしておくことができます。 このオプションを使用する場合は、ファイルのサイズによってキャッシュ時間が異なります。ご注意ください。 各 File Media Source アセットは、ネイティブ メディア プレイヤー プラグイン (メディア再生用) をプラットフォームごとにオーバーライドしたり、プレイヤー プラグインの自動選択が可能です。

プリキャッシュはすべてのプレイヤーでサポートされているわけではありません。現在は、 MfMedia PS4Media WmfMedia プレイヤー プラグインのみがサポートしています。

File Media Source アセットの使用方法については、「 レベル内でビデオをプレイする 」操作ガイドを参照してください。

Image (Img) Media Source アセット

ImgMediaSource.png

Img Media Source アセットは、デバイス上に格納された画像シーケンスの再生、あるいは Sequence Path フィールドがシーケンスの最初の画像を指定するために使われている共有ローカルネットワークから使用することができます。 画像は対応した形式であり、またエンジンがシーケンスの残りの画像を発見および追加できるように連続した名前 ( MyImage01.exr MyImage_01.exr など) を付けなければなりません。

詳細オプションの中で、シーケンスの画像に対して Frames Per Second Override Proxy Overrides を定義することができます。他のソース アセットと同様に、メディアをプレイするプラットフォームの種類に応じて、 [Player Overrides] セクションで使用するプレイヤー プラグインを定義することができます。

Img Media Source アセットの使用方法については、「 Image Sequence の再生 」操作ガイドを参照してください。

Stream Media Source アセット

MediaSource_Stream.png

この Stream Media Source アセットは、URL をメディアのソースとしてインターネットからプルします。現在、YouTube または DailyMotion 形式の URL へのリンクには対応していないので、ホストのファイルに直接リンクする必要があります。File Media Source アセットと同様に、Stream Media Source アセットはそれぞれのプレイヤー プラグインをプラットフォームごとの上書きや、プレイヤー プラグインの自動選択が可能です。

Stream Media Source アセットの使用方法については、「 ビデオ ストリームをプレイする 」操作ガイドを参照してください。

Platform Media Source アセット

MediaSource_Platform.png

Platform Media Source アセットはプラットフォーム単位での Media Sources の上書きをサポートします。 例えば、特定の映像を Android デバイスまたは PS4 のみでプレイする場合、 どのプラットフォームでどの映像を再生するか、 [Media Sources] セクションで指定することができます。 Platform Media Source を使用する場合、Media Source はそれぞれのプラットフォームから選択しなければなりません。

Stream Media Source アセットの使用方法については、「 プラットフォームに特化したメディアをプレイする方法 」操作ガイドを参照してください。

Media Playlist アセット

Media Source アセットを個別にプレイする場合、 Media Playlist アセットで複数の Media Sources を順番にプレイすることができます。 Media Source アセットをいくつか作成したら、それらを Media Playlist に追加すると、指定した順序で自動的に各アセットがプレイされます。 コンテンツ ブラウザ [Media] セクションの [Add New (新規追加)] ボタンを使って Media Playlist を作成することができます。

MediaPlaylistButton.png

Media Playlist を作成して開くと、メディア プレイリスト エディタが開きます。

CustomizedPlaylist.png

バージョン 4.18.1 では、 [Loop] オプションはプレイリストをループしません。 Media Player アセットの Loop オプションを選択すれば、Playlist をループすることができます。

メディア プレイリスト エディタで、インクルードするソースアセットを定義し、再生順序を指定することができます。 作成した Media Source アセットはすべて画面下方の Media Library ウィンドウで表示され、ダブルクリックするとプレイリストの最後に追加 (または [Item] セクションの + ボタンを使って追加) することができます。 Media Playlist は、異なるタイプが混ざった Media Source を使用して、ブループリント スクリプトでの指定がない限り、順番にプレイすることができます。

Media Playlist アセットの使用方法については、「 Media Playlist の使用方法 」操作ガイドを参照してください。

Media Sound コンポーネント

映像と関連しているオーディオを聴くためには、 Media Sound コンポーネントを作成して、レベル内でメディアを再生するブループリントあるいはアクタに追加する必要があります。

4.18 より古いバージョンではサウンドの作成に Media Sound Wave アセットを使用していました。現在は非推奨となっています。現在 Media Sound Wave アセットを使用中の場合、映像付きのオーディオを生成するためには、そららのアセットおよび関連する Media Sound コンポーネントをレベルから削除する必要があります。

下の画像では、レベル内にスタティックメッシュ アクタがあり、 [Details] パネルに Media Sound コンポーネントが追加されています。

MediaSoundComponent.png

アクタまたはブループリントに Media Sound コンポーネントを追加したら、Media Sound コンポーネントを Media Player アセットに追加する必要があります。

MediaSoundComponent_AssignedPlayer.png

Media Sound コンポーネントには [Details] パネルがあり、その中の Channels Attenuation Concurrency 、その他 オーディオ 関連の設定を使ってサウンドの聞こえ方を定義することができます。 Media Player アセットにリンクする時に、映像に適用されているオーディオが映像と一緒に自動的に再生されます。 Media Sound コンポーネントは通常はデフォルト設定のままにしておきます。ただし、サウンドの聞こえ方をさらに調節したい場合は、[Concurrency (並列)]、[Attenuation (減衰)]、その他の設定を使用します。

[Surround] チャンネル設定はまたオーディオ ミキサーではサポートされていません。今後のリリースでアップデートされる予定です。

Media Texture アセット

Media Texture アセットは Media Player アセットからビデオ トラックをレンダリングする際に使用します。

MediaTexture.png

Media Sound コンポーネントがオーディオを提供し、Media Textures は Media Source アセットからの視覚を提供します。 Media Texture アセットは、 マテリアル にインクルードして、掲示板、テレビ、あるいはモニターなどのレベル内のメッシュに適用して、映像がゲーム ワールドにあるオブジェクト上で再生されているかのように見せることができます。 Media Texture アセットを作成する場合、参照している Media Player を Media Player Details パネルで定義する必要があります。

MediaTextureWindow.png

下の画像は、Media Texture アセットを含んだマテリアルを作成し、レベル内のスタティックメッシュに適用しています。 Texture Editor では Media Texture がレベル内のマテリアル内に表示される再生位置と同じ場所を表示します。 Media Texture は、使用可能な標準の テクスチャのプロパティ の他に、 Clamped Mirror World 値の X および Y 軸 アドレス指定 値も受け取ります。

SampleMediaTexture.png

マテリアルは Media Texture アセットを参照する Texture Sample ノードを使用します。 Texture Sample ノード上で、 Sampler Type プロパティを [External] に設定して再生ができるようにする必要があります。

SamplerType.png

Sampler Type プロパティ設定 (デフォルト)

electra_sampler_type.png

Sampler Type プロパティ設定 (Electra Media Player)

4.18 よりも古いバージョンで作成された Media Texture を使用しているマテリアルは、 Sampler Type プロパティを手書きのコードで [External] に設定しなければならない場合があります。

Media Player アセット

Media Source あるいは Media Playlist がある場合、 Media Player アセットを使ってアセットを再生することができます。 Media Player アセットは、Media Texture を使って映像再生と Media Sournd コンポーネントを作成し、映像と関連したオーディオを制作します。 [Media] セクションの [Add New] ボタンで、 コンテンツ ブラウザ に Media Player アセットを作成することができます。

MediaPlayer.png

Media Player アセットを作成すると、そのアセットを Media Player にリンクするかどうかの [Create Media Player] ウィンドウ (下の画像) が表示されます。 これにより、作成した Media Player アセットに関連した Media Texture の作成および割り当てが自動的に行われます。

CreateMediaPlayer.png

Media Player アセットを ダブルクリック すると、 Media Player Editor が開きます。

MediaPlayerWindow.png

Media Player Editor で、プロジェクトで作成したすべての Media Source アセットのプレビュー、およびメディアによるプレイ、ポーズ、巻き戻し、早送り (対応している場合) ができます。 また、Media Player アセットの再生設定の定義もできます。たとえば、メディアが自動的にプレイを開始する、メディアがループ再生をするか (対応している場合)、(プレイリストを使っている場合) プレイリストからプレイするソースをランダムに選択するかどうかなどです。

メディア エディタとオプションの詳細については、「 メディア エディタのリファレンス 」ページをご覧ください。

メディア アセットおよびスクリプト処理

Media Player アセットのセットアップと Media Sound および (映像にオーディオがついている場合は) Media Sound コンポーネントへのリンク付けが完了したら、ゲーム セッション中にプレイすることができます。 メディアをインゲームでプレイするために、まず最初にブループリントあるいは C++ を使って Media Player アセットへの参照を作成する必要があります。 手順は、まずブループリント内に Media Player の変数タイプの 変数 を作成して、その変数の デフォルト値 を使用する Media Player を参照するように設定します。

MediaPlayerDetailsSet.png

Media Player への参照を定義すると、メディア ソースの種類に応じて Open 関数の呼び出しが可能になります。

MediaPlayerOpen.png

オプション

説明

Open File

端末上の指定されたファイル位置にあるメディア ファイルを開きます。

Open Playlist

指定したプレイ リストの最初のメディア ソースを開きます。

Open Playlist Index

指定したプレイ リストの特定のメディア ソースを開きます。

Open Source

指定したメディア ソース (ファイル メディア、ストリーム メディア、プラットフォーム メディア) を開きます。

Open URL

指定したメディア URL を開きます。

Reopen

現在開いているメディアまたはプレイ リストを再度開きます。

新規に作成された Media Player アセットはデフォルトで [Play on Open] オプションが有効になっています。つまり、Media Source を開くと、映像のプレイが自動的に始まります。 開いた時にソースがプレイしないようにし、++ で明示的に呼び出された時のみプレイされるように、Media Player アセットのこのオプションのチェックを外すことができます。ブループリントまたは C

UncheckPlayOnOpen.png

正常に開いたものの、自動プレイをしたくない場合、 Play Blueprint event に結合することができます。

PlayWhenPressed.png

上の図の Event BeginPlay では、 マウスの右ボタン 押される と、プレイの準備ができている場合に限り、Media Playlist が開いて Media Player がプレイされます。

開くと同時に Media Source を自動的にプレイしないで、Play 関数を使って再生を開始する場合は、Play 関数にチェーンせず、Open Source あるいは Open Playlist のコールの後に直接呼び出すことをお勧めします。 理由は、Media Source は開くのに時間がかかることがあるため、Play コマンドが false を返し、映像が期待どおりにプレイされなくなるためです。これらの場合、 On Media Opened コールにバインドする バインディング イベント を使うと良いかもしれません。

OnMediaOpened.png

上の画像では、Stream Media ソースを開いて、完全に開くとメディアをプレイするイベントを発行する On Media Opened に Media Player を バインドしています。

様々な再生状況 (映像がポーズか、または映像が終了しているか) に対して、Media Player reference やその他の関数を呼び出すことができます。 また、Media Player 参照から異なる関数を呼び出して、映像がポーズなのか、プレイ中なのか、ループ設定させているかを確認したり、(他のユースケースでの) プレイレート情報などにアクセスしたりすることもできます。 これらのオプションは、Media Player reference を引き出して、ブループリント コンテキスト メニューの [Media Player] セクションで確認できます。

MediaPlayerNodes.png

シーケンサを統合する

Media Framework によるビデオの再生は、メディア プレイヤーのリアルタイム 動作とは別に、 シーケンサー のタイムラインに高いフレーム精度で同期されます。この同期のためのメディア プレイヤーとの通信および設定は、シーケンサーが内部で処理します。

現在、この新しい同期をサポートしているのは ImageMediaPlayer のみです。この機能をサポートしていないメディア プレイヤーを使用した場合、再生はシーケンサーのタイムラインで示されるものに近い形で開始または停止しますが、フレームごとのアライメントはランダムになる場合があります。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル