타임코드 및 젠록

언리얼 엔진이 AJA 비디오 입력에서 타임코드를 채택하는 방법과, 소스 비디오와 일치하도록 프레임 속도를 잠그는 방법을 설명합니다.

Choose your operating system:

Windows

macOS

Linux

기본적으로 언리얼 에디터는 컴퓨터의 현재 시스템 시간에 따라 자체 timecode (타임코드)를 생성합니다. 이 타임코드는 기본적으로 초당 30 프레임으로 실행되도록 설정되어 있지만, 보통 엔진에서 초당 렌더링하는 프레임 수는 훨씬 많습니다. 그래서 일반적으로 출력에 연속된 여러 프레임이 같은 타임코드 값을 할당받게 됩니다.

전문 비디오 작업을 할 때는 여러 비디오 피드 및 신호 처리 장치간에 타임코드를 동기화해야 합니다. 그러기 위해 언리얼 엔진의 타임코드를 작업 중인 비디오 피드의 타임코드와 일치시켜야 할 수도 있습니다. 경우에 따라 한 발 더 나아가서, 기준 입력을 통해 들어오는 비디오 각 프레임에 대해 한 프레임만 생성하도록 엔진을 잠글 수도 있습니다. 이를 일컬어 genlock (젠록)이라 합니다.

여기서는 언리얼 엔진이 별도의 타임코드 값을 생성하는 대신 AJA 카드에 지정한 포트의 타임코드 값을 채택하는 방법과, 그 타임코드 시그널에 언리얼 엔진을 젠록하는 방법을 설명합니다.

타임코드 및 젠록 관리는 활발히 개발 중이며, 이후 버전에서 변경될 가능성이 있습니다.

언리얼 에디터에서 타임코드 시각화

언리얼 에디터에서 작업할 때 언리얼 엔진이 사용 중인 실제 타임코드 값을 확인하려면, Timecode Provider (타임코드 프로바이더) 패널을 사용합니다. 이 패널은 메인 메뉴의 창 > 개발자 툴 > 타임코드 프로바이더 아래에서 찾을 수 있습니다.

timecode-panel.png

현재 타임코드, 타임코드 프로바이더 (타임코드 값의 소스), 초 단위로 생성되는 타임코드 프레임 수가 표시됩니다. 이 패널은 메인 레벨 에디터 UI 어디에나 도킹할 수 있습니다.

또는 다음 콘솔 명령을 사용해도 됩니다.

stat timecode

언리얼 에디터 뷰포트에 HH:MM:SS:FF 형식으로 값이 출력되는 것이 보입니다.

Timecode display in the viewport

입력 신호에서 타임코드를 채택하도록, 또는 비디오 신호에 젠록하도록 언리얼 엔진을 구성한 경우, 타임코드 및 젠록 소스도 볼 수 있습니다. 예:

Genlocked and synchronized timecode in the viewport

이 명령을 사용해서 기대하는 속도로 언리얼 엔진이 프레임을 생성하는지, 입력 비디오와 같은 타임코드 값을 사용하는지 확인할 수 있습니다.

타임코드 및 젠록 구성

AJA 또는 Blackmagic 장치에서 오는 입력 SDI 비디오 피드에서 언리얼 엔진이 타임코드 값을 채택하도록 만드는 방법과, 그 피드에 프레임 속도를 고정시켜 입력 각 프레임당 출력 한 프레임만 생성하도록 만드는 방법을 단계별로 설명합니다.

  1. 콘텐츠 브라우저에 우클릭하고 기본 애셋 생성 > 블루프린트 클래스 를 선택합니다.
    Create new Blueprint class

  2. 부모 클래스 선택 창에서 모든 클래스 섹션을 (1) 펼칩니다. (그림처럼) AjaTimecodeProvider 클래스 또는 BlackmagicTimecodeProvider 클래스를 (2) 선택하고 선택 (3)을 클릭합니다.
    TimecodeProvider parent classes
    콘텐츠 브라우저로 돌아와 새 애셋에 AJA_Timecode_Port 또는 Blackmagic_Timecode_Port 처럼 설명이 되는 이름을 짓습니다.

  3. 새 애셋을 더블클릭하여 블루프린트 에디터에서 열고 디테일 패널에서 프로퍼티를 구성합니다. Timecode Provider settings

    • 들어오는 비디오 스트림에서 타임코드를 읽으려면, Video Configuration 또는 Media Configuration 를 AJA 또는 Blackmagic 카드의 포트로, 그리고 (해당되는 경우) 피드에서 읽을 타임코드 유형을 (LTC 또는 VITC) 설정합니다.

    • AJA 카드를 사용하고 비디오 스트림이 아닌 카드의 기준 포트에서 타임코드를 읽으려면, Use Reference In 를 활성화하고 Video Configuration 대신 Reference Configuration 을 구성합니다.

  4. 블루프린트 클래스를 컴파일 , 저장 후 블루프린트 에디터를 닫습니다.

  5. 언리얼 엔진을 비디오 소스로 젠록하려면, 이전 단계를 반복하여 블루프린트 클래스를 하나 더 만들어 구성하고, 이번에는 부모 클래스를 AjaCustomTimeStep 또는 BlackmagicCustomTimeStep 로 합니다.
    Custom Time Step Provider parent classes

  6. 이 클래스는 AjaTimecodeProvider 또는 BlackmagicTimecodeProvider 와 비슷한 세팅이 필요합니다:
    Custom Time Step Provider settings
    AJA 카드 역시 추가 세팅을 제공하며, 자세한 내용은 툴팁을 참고하세요.

  7. 메인 메뉴에서 편집 > 프로젝트 세팅 을 선택합니다.
    프로젝트 세팅 창에서 엔진 > 일반 세팅 카테고리의 (1) Timecode 섹션을 (2) 찾습니다. TimecodeProvider 드롭다운 목록에서 생성한 타임코드 포트 애셋을 선택합니다.
    Set the TimecodeProvider in the Project Settings

  8. 언리얼 엔진을 비디오 소스에 젠록하려면, 위의 Framerate 섹션을 찾아 하단의 고급 프로퍼티를 펼칩니다. Custom TimeStep 드롭다운 목록에서 생성한 젠록 포트 애셋을 선택합니다.
    Set the Custom TimeStep in the Project Settings

  9. 언리얼 에디터를 닫고 프로젝트를 재시작합니다.

미디어 프로파일을 사용해서 프로젝트에 여러가지 다양한 미디어 구성을 설정하려는 경우, 각 미디어 프로파일에서 Timecode 및 Timestep Providers 에 대한 프로젝트 수준의 기본 세팅을 오버라이드해도 됩니다. 자세한 정보는 다중 미디어 구성 지원 문서를 참고하세요.

최종 결과

타임코드 프로바이더 및 커스텀 타임스텝 클래스에 설정한 포트로 비디오 입력을 받고 있고, 그 비디오에 해상도, 프레임 속도, 타임코드 형식을 지정한 경우, 언리얼 엔진은 비디오의 타임코드를 채택해서 각 입력 프레임마다 하나의 출력 프레임을 생성하도록 프레임 업데이트 빈도를 고정시킬 것입니다.

이것이 작동하는지 확인하려면, 언리얼 에디터에서 타임코드 시각화 부분의 설명된 방법 중 하나를 사용하세요.

타임코드 텍셀 인코딩

디버깅 목적으로 AJA 및 Blackmagic 장치에 대한 미디어 소스 및 미디어 출력 애셋은 각 프레임의 타임코드를 비디오 이미지에 흰색으로 밝힌 픽셀로 인코딩할 수 있습니다. 비디오의 특정 프레임이 해당 비디오와 함께 제공되는 타임코드 신호와 일치하는지 확인하는 시각적인 방법이 필요한 경우 좋습니다.

타임코드는 보통 HH:MM::SS:FF 형식 총 12 자리로 표시됩니다. 이 자릿수 각각은 텍스처 출력의 이미지 맨 위부터 시작하는 행을 할당받습니다. 각 행에서 이미지 왼쪽부터 그 타임코드 숫자 값 위치에 있는 픽셀을 찾아 타임코드 값을 나타냅니다. 가장 왼쪽 픽셀은 픽셀 번호 0 입니다.

즉 예를 들어 주어진 타임코드 값이 12:08:44:12 라면:

  • 첫 번째 행 왼쪽에서 두 번째 픽셀이 켜집니다 (픽셀 번호 1).

  • 두 번째 행 왼쪽에서 세 번째 픽셀이 켜집니다 (픽셀 번호 2).

  • 세 번째 행 가장 왼쪽 픽셀이 켜집니다 (픽셀 번호 0).

  • 네 번째 행 왼쪽에서 아홉 번째 픽셀이 켜집니다 (픽셀 번호 8).

  • 이런 식입니다.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소