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

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

Choose your operating system:

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 の形式で値が表示されます。

Timecode display in the viewport

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

Genlocked and synchronized timecode in the viewport

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

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

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

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

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

  3. 新規アセットをダブルクリックしてブループリント エディタで開きます。プロパティを [Details (詳細)] パネルでセットアップします。 Timecode Provider settings

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

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

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

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

  6. このクラスでは、 [AjaTimecodeProvider] または [BlackmagicTimecodeProvider] に対するものと同様の設定が必要です。
    Custom Time Step Provider settings
    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)。

  • など。

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