ブループリントでビデオの再生方法を制御する

ブループリントでビデオのポーズ、巻き戻し、早送り、再生開始を操作する方法

Choose your operating system:

Windows

macOS

Linux

Unreal Engine 4 プロジェクト内でのビデオ再生に加えて、さまざまな ブループリント ノードを使って、プレイヤーによるビデオの制御を可能にすることができます。

この操作ガイドでは、ビデオのポーズ、巻き戻し、早送り、再生開始のそれぞれの機能を作成して、プレイヤーがビデオの再生方法を制御する仕組みを説明します。

FinalHero.png

すべてのプレイヤー プラグインが早送り / 逆再生に対応しているわけではありません。詳細は「 メディア フレームワークのテクニカル リファレンス 」を参照してください。

初期設定

最初に、使用するメディアを確認し、コンテンツ ブラウザにフォルダを作成します。これにより、ブループリント内に後でビルドする基礎が配置されます。

この操作ガイドでは Starter Content Enabled (スターター コンテンツを有効にした状態) Blueprint Third Person Template プロジェクトを使います。 再生するビデオが必要です。右クリック して サンプル ビデオ をダウンロードすることもできます。

  1. [コンテンツ ブラウザ] [Sources] を展開したら、[Content] に 「Movies」 という名前のフォルダを作成します。 作成されたフォルダを右クリックして、 [Show in Explorer (エクスプローラーで表示)] を選択します。

    ControllingPlayback_01.png

  2. サンプル映像 (対応する映像) をパソコン上のプロジェクトの「 Content > Movies 」フォルダにドラッグします。

    ControllingPlayback_02.png

    ビデオ コンテンツをプロジェクトでパッケージ化およびデプロイするために、コンテンツは常にプロジェクトの 「Content>Movies」 フォルダに置かれている状態にしておく必要があります。

  3. プロジェクト内で Media Player と関連する Media Texture アセットを作成し、それぞれに「 MediaPlayer 」と「 MediaPlayer_Video 」と名前を付けます。

  4. Video 」という名前で File Media Source アセットを作成し、その中で、 ファイル パス Step 2 に追加されたビデオに指定します。

    ControllingPlayback_03.png

  5. Media Player アセットを開き [Play on Open] オプションを無効にします。

    ControllingPlayback_04.png

    この例では、Media Source を開くと自動再生が開始されるのではなくプレイヤーによる再生の制御を可能にします。

  6. メイン エディタの [Modes] パネルの [Basic] から [Plane] をレベルにドラッグしサイズを自由に変更します (Place アクタは無効でない場合は [Window] タブ内に存在します)。

  7. MediaPlayer_Video テクスチャを プレーン にドラッグします。そのプレーンの [Details] パネルに Media Sound Component を追加し Media Player アセットを使用する設定にします。

    クリックしてフルサイズで表示。

ブループリントの設定

最初のブループリントを設定し、それに関数を追加していきます。

  1. メイン ツールバー で [ブループリント] ボタンをクリックして、次に [Open Level Blueprint (Level ブループリントを開く)] を選択します。

    ControllingPlayback_06.png

  2. Level Blueprint 「Media Player Object Reference」 型の 「MediaPlayer」 という変数を作成し、 MediaPlayer アセットに指定します。

  3. Ctrl を押しながら MediaPlayer 変数をグラフへドラッグし、右クリックして Open Source Event Begin Play を使って Video File Media Source アセットを開きます。

    ControllingPlayback_07.png

    または、(Open Source ノードの代わりに) Open Source Latent ノードを使用してオプション付きの指定されたメディア ソースを開くこともできます。ソース ファイルが開くまで Completed 出力ピンのじっこうは遅れます。

    Open_Source_Latent.PNG

    ソースの再生レートの設定などに便利です。

再生/ポーズ - Up

  1. Up キーボード イベントを追加して Flip Flop に接続し、 Media Player 変数を引き出して、 Play Pause を下図のように使用します。

    ControllingPlayback_08.png

    プレイヤーが 上向き 矢印キーボード キーを押すと、Media Source が再生を開始し、もう 1 度押すとビデオがポーズします。

    ポーズは Play Rate が 0.0 に設定された状態です。ただし、すべての Media Sources がポーズをサポートしているわけではありません (たとえば、Web Cam その他のビデオ キャプチャ ハードウェア ソース)。 Can Pause ブループリント ノードは Media Source のポーズをサポートするか決定します。

巻き戻し/早送り - Left/Right

  1. Left および Right キーボード イベントを追加して、 Media Player 変数を引き出し、左向きのキーは -2 、右向きのキーは 2 Set Rate を使います。

    ControllingPlayback_09.png

    これによりプレイヤーはキーボードの左向き矢印キーを押せばビデオの再生レートを「-2」に設定することができます (値 1.0 の倍速でのビデオ逆送り再生が、通常の順送り再生です)。

    キーボードの右向き矢印キーを押すと、ビデオは通常の再生速度の倍速で順送り再生されます。

    プレイヤーが巻き戻しキーあるいは早送りキーを押す回数を決めたり、再生レートを倍速、4 倍速、または 6 倍速以上に調整するためのブループリント ロジックを追加することができます。

    プレイヤーのプラグインが 1.0 以外の Play Rates をサポートしていたとしても、実際に選択できる再生レートは使用中の Media Source に依存します。 Get Supported Rates 関数を使ってサポートされているレートを確認することができます。

    SupportRates.jpg

    [Thinned] レートと [Unthinned] レートには違いがあることに留意してください。Thinned とはいくつかのフレームをスキップすることで、Unthinned はすべてのフレームをデコードすることです。

終了/再生開始 - Down

  1. [Down] キーボード イベントを追加して Flip Flop へ接続し、 Media Player リファレンスを引き出して Get Time 関数コールを使います。

    ControllingPlayback_10.png

    Get Time 関数コールは、動画を再度開いて再生を開始する時に格納して使用する現在の再生時間を返します。

  2. Get Time ノードの Return Value を右クリックして Stop Time という名前の変数へ昇格させて、以下のようにすべてのノードを Close 関数コールへ接続します。

    ControllingPlayback_11.png

    これによりキーボードの下向き矢印を押すと Media Player が終了しますが、Media Player が停止した現在時刻は変数に格納されます。

  3. Flip Flop B ピンを引き出して、 Open Source ノードを使い、 Media Source Video Media Source に設定します。

    ControllingPlayback_12.png

    これにより、ビデオが再度開きますが、ビデオの冒頭から開きます。これについて説明します。

  4. Media Player 参照を引き出して、 Assign On Media Opened Event Dispatcher を使って以下のように接続します。

    ControllingPlayback_13.png

    すると Media Source が完全に開いた時に接続しているイベントのみを呼び出す イベント ディスパッチャー が作成されます。 Media Source に命令を伝える前に Media Source が開いていることが確認することができるので、Media Player にコマンドを発行する時のグッドプラクティスです。 Media Source を開いた直後に Media Player に直接コマンドを発行すると、Media Source が完全に開いている保証はなく、エラーを引き起こす可能性のあるコマンドを受け取ってしまいます。

  5. Media Player 参照を引き出して、 Seek function followed by the Play 関数の後に Seek 関数を呼び出します。

  6. Stop Time 変数を Seek ノード上の Time ピンに接続して、Seek ノードと Play ノードを OnMediaOpened イベントに以下のように接続します。下のように Seek ノードと Play ノードを OnMediaOpened イベントにつなぎます。

    ControllingPlayback_14.png

    これで、プレイヤーが下向き矢印キーを押すと、Media Player の終了前に現在時刻が格納されるようになりました。 もう 1 回押すと Video Media Source が開きます。完全に開くと、ビデオの再生前 (再生の開始前) に指定された Stop Time へ移動します。

  7. Level ブループリント を開き、エディタのメイン ツールバーから [Play] ボタンを押して再生します。

最終結果

上向き 下向き 左向き 右向き 矢印キーを使って、ビデオの再生を調節します。

上向き矢印 はビデオの再生 / 一時停止、 下向き矢印 はビデオの終了 / 再開、 左向き矢印 は巻き戻し、 右向き矢印 は早送りです。

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