タイムコードとゲンロック

Unreal Engine で AJA ビデオ入力のタイムコードを使用する方法、およびソース ビデオに合うようにエンジンのフレーム レートをロックする方法を説明します。

Windows
MacOS
Linux

デフォルトでは、Unreal Editor は使用するコンピュータの現在のシステム タイムに基づいて、独自のタイムコードを生成します。 このタイムコードはデフォルトでは、30 FPS (フレーム/秒) で動作するように設定されますが、エンジンは通常、1 秒に 30 をはるかに超えるフレームをレンダリングします。 したがって、出力の連続する複数フレームに、同じタイムコード値が割り当てられます。

プロレベルのビデオと連携するときに、複数の異なるビデオ フィードと信号処理デバイスの間でタイムコードを同期させることが必要になることがあります。 これを実行するときに便利なのは、Unreal Engine のタイムコードを、連携するビデオ フィードのタイムコードに一致させることです。 場合により、さらに進めて、リファレンス入力を通じて入るビデオの各フレームに対して、単一のフレームだけを生成するようにエンジンをロックする必要があります。これを「genlock (ゲンロック)」と呼びます。

このページでは、独自の値を生成しないで、AJA カードで指定したポートのタイムコード値を Unreal Engine で採用する方法と、そのタイムコード信号に対して Unreal Engine をゲンロックする方法について説明します。

タイムコードとゲンロック管理は現在開発中の機能で、将来のバージョンで変更される可能性があります。

Unreal Editor でタイムコードを視覚化する

Unreal Editor で作業中に Unreal Engine で使用されている実際のタイムコード値を確認するには、[Timecode Provider (タイムコード プロバイダ)] パネルを使用します。 このパネルを表示するには、メイン メニューから [Window (ウィンドウ)] > [Developer Tools (デベロッパー ツール)] > [Timecode Provider (タイムコード プロバイダ)] を選択します。

timecode-panel.png

現在のタイムコード、タイムコード プロバイダ (タイムコード値のソース) および 1 秒以内に生成されているタイムコード フレーム数が表示されます。 このパネルはメイン レベル エディタの UI のどこにでもドッキングできます。

別の方法として、次のコンソール コマンドを使用できます。

stat timecode

Unreal Editor のビューポートに HH:MM:SS:FF の形式で値が表示されます。

ビューポートでのタイムコード表示

入力信号のタイムコードを採用する、またはビデオ信号にゲンロックするように Unreal Engine をセットアップしている場合、ゲンロックとタイムコードのソースも表示されます。 例:

ビューポートのゲンロックおよび同期されたタイムコード

このコマンドで Unreal Engine が期待するレートでフレームを生成していること、および入力ビデオと同じタイムコードを使用していることを確認できます。

タイムコードとゲンロックをセットアップする

次のステップでは、AJA または Blackmagic デバイスから来る入力 SDI ビデオ フィードのタイムコード値を Unreal Engine で採用する方法、および入力の各フレームに出力フレームを 1 つだけ生成するため、対象のフィードにフレーム レートを Unreal Engine がロックする方法を説明します。

  1. コンテンツ ブラウザを右クリックして、[Create Basic Asset (基本アセットの作成)] > [Blueprint Class (ブループリント クラス)] を選択します。
    新しいブループリント クラスを作成する

  2. [Pick Parent Class (親クラスを選択)] ウィンドウで、[All Classes (すべてのクラス)] セクション (1) を展開します。 [AjaTimecodeProvider] クラスまたは [BlackmagicTimecodeProvider] クラス (2) を検索して選択し、[Select (選択)] (3) をクリックします。
    TimecodeProvider 親クラス
    コンテンツ ブラウザに戻り、新しいアセットにわかりやすい名前、「AJA_Timecode_Port」または「Blackmagic_Timecode_Port」などと付けます。

  3. 新規アセットをダブルクリックしてブループリント エディタで開きます。プロパティを [Details (詳細)] パネルでセットアップします。 タイムコード プロバイダの設定

    • 入力ビデオ ストリームからタイムコードを読み取るには、[Video Configuration (ビデオ コンフィギュレーション)] または [Media Configuration (メディア コンフィギュレーション)] で AJA または Blackmagic カードを指定し、(該当する場合は) フィードから読み取るタイムコードのタイプ (LTC または VITC) を設定します。

    • AJA カードを使用し、ビデオ ストリームからではなく、カードの参照ポートからタイムコードを読み取る必要がある場合は、[Use Reference In (参照入力の使用)] をオンにして、[Reference Configuration (参照コンフィギュレーション)][Video Configuration (ビデオ コンフィギュレーション)] の代わりに設定します。

  4. ブループリント クラスを コンパイル および 保存 してから、ブループリント エディタを閉じます。

  5. Unreal Engine をビデオ ソースにゲンロックする必要がある場合、前の手順を繰り返して、ブループリント クラスを作成しセットアップします。ただし今回は、[AjaCustomTimeStep] または [BlackmagicCustomTimeStep] を親クラスとして使用します。
    CustomTimeStepProvider 親クラス

  6. このクラスでは、[AjaTimecodeProvider] または [BlackmagicTimecodeProvider] に対するものと同様の設定が必要です。
    CustomTimeStepProvider 設定
    AJA カードの場合はさらに設定があります。詳細はツールチップを参照してください。

  7. メイン メニューから [Edit (編集)] > [Project Settings (プロジェクト設定)] を選択します。
    [Project Settings (プロジェクト設定)] ウィンドウで、[Engine (エンジン)] > [General Settings (一般設定)] カテゴリ (1) を開き、[Timecode (タイムコード)] セクション (2) を見つけます。 [TimecodeProvider] ドロップダウン リストから、作成したタイムコード ポート アセットを選択します。
    Set the TimecodeProvider in the Project Settings

  8. Unreal Engine をビデオ ソースにゲンロックする必要がある場合、上の [Framerate (フレームレート)] セクションに移動し、セクションの一番下にある詳細プロパティを展開します。 [Custom TimeStep (カスタム タイムステップ)] ドロップダウン リストから、作成したゲンロック ポート アセットを選択します。
    Set the Custom TimeStep in the Project Settings

  9. Unreal Editor を閉じて、プロジェクトを再起動します。

メディア プロファイルを使用して、プロジェクトに複数の異なるメディア コンフィギュレーションをセットアップする場合、各メディア プロファイルのタイムコードとタイムステップ プロバイダに対するデフォルトのプロジェクトレベル設定をオーバーライドすることもできます。 詳細は、「複数メディア コンフィギュレーションのサポート 」を参照してください。

最終結果

タイムコード プロバイダとカスタム タイムステップ クラスに対してセットアップしたポートにビデオ入力が到着し、そのビデオの解像度とフレームレート、タイムコード形式が指定どおりである限り、Unreal Engine はビデオのタイムコードを採用し、フレーム更新周波数をロックして、各入力フレームに対して 1 つの出力フレームを生成するようにする必要があります。

これが機能していることを確認するには、「Unreal Editor でタイムコードを視覚化する 」で説明したオプションの 1 つを使用します。

タイムコード テクセル エンコーディング

デバッグ目的で、AJA および Blackmagic デバイスのメディア ソースおよびメディア出力アセットで、各フレームのタイムコードをビデオ画像に、白く光るピクセルをエンコードできます。 これが便利なのは、視覚的にビデオの対象フレームが、それが付随しているタイムコード信号と実際に一致していることを確認する場合です。

タイムコードは通常 HH:MM::SS:FF の 8 桁の形式で表現されます。 これらの各桁はテクスチャ出力の 1 行に画像の一番上から順に割り当てられます。 各行の中で、タイムコードの桁の値を画像の左からカウントして、タイムコード値を表すピクセルを見つけます。 一番左のピクセルはピクセル番号 0 です。

したがって、たとえば、タイムコード値が 12:08:44:12 である場合

  • 第 1 行で、左から 2 番目のピクセルが点灯します (ピクセル番号 1)。

  • 第 2 行で、左から 3 番目のピクセルが点灯します (ピクセル番号 2)。

  • 第 3 行で、一番左のピクセルが点灯します (ピクセル番号 0)。

  • 第 4 行で、左から 9 番目のピクセルが点灯します (ピクセル番号 8)。

  • などとなります。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback