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

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] ドロップダウン リストから、作成したタイムコード ポート アセットを選択します。
    ![Project Settings (プロジェクト設定)] での [TimecodeProvider] の設定

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

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

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

最終結果

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

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

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

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

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

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

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

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

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

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

  • などとなります。

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信