AJA 미디어 또는 Blackmagic Design 하드웨어 작업에 대한 퀵스타트 가이드를 따라하셨다면 프로젝트에서 미디어 입력 및 미디어 캡처 에셋을 구성하여 SDI 비디오 피드를 입출력하는 한 가지 방법을 보셨을 것입니다.
그러나 한 프로젝트에 여러 가지 미디어 환경설정을 사용해야 하는 경우가 종종 있습니다. 예를 들면 다음과 같습니다.
- 프로젝트 작업을 하드웨어나 배선 구성이 다른 여러 컴퓨터에서 해야 할 수 있습니다. 예를 들어 한 컴퓨터는 AJA 카드를 사용하고 다른 컴퓨터는 Blackmagic 카드를 사용하거나 비디오 피드가 한 컴퓨터는 포트 1에 연결되었는데 다른 컴퓨터는 포트 2에 연결되었을 수 있습니다.
- 한 컴퓨터에서 다양한 종류의 소스와 출력 간에 프로젝트를 전환해야 할 수도 있습니다. 예를 들어 SDI 연결을 통해 들어오는 라이브 피드 작업을 하다가, 피드가 오프라인이면 디스크에 미리 녹화된 파일을 입력으로 사용하도록 전환하고 싶을 수 있습니다.
- 언리얼 엔진이 타임코드를 읽거나 프레임 레이트를 젠록하는 방식을 변경해야 할 수도 있습니다. 특히 다른 소스나 입력으로 변경하는 경우 그렇습니다. 예를 들어 SDI 연결을 통해 들어오는 입력 피드를 사용할 때만 언리얼 엔진의 프레임 레이트를 고정할 수 있습니다.
이러한 경우, 구성을 전환할 때마다 미디어 구성과 프로젝트 콘텐츠를 크게 변경하는 것은 좋지 않습니다. 그 대신 미디어 입력, 출력, 타임코드 제공자, 젠록 제공자 관련 모든 환경설정 세팅을 하나로 묶어 주는 미디어 프로파일을 여러 개 구성하면 됩니다. 다른 미디어 프로파일로 전환하는 것만으로도 전체 미디어 I/O 구성을 즉시 변경할 수 있습니다.
미디어 프로파일 및 프록시 작동 방법
미디어 프로파일은 프록시 에셋에 의존하여 서로 다른 두 포인트를 연결합니다.
- 한 쪽은 미디어 프로파일에 구성한 입력 및 출력 환경설정입니다.
- 다른 쪽은 프로젝트 콘텐츠에서 그 입출력을 소모 또는 생성하는 곳입니다.
다음 목록은 위 이미지에서 번호를 붙인 섹션을 나타냅니다.
- 프로젝트에 지원해야 하는 사용 사례마다 하나씩 다수의 미디어 프로파일을 구성합니다. 각 프로파일에는 미디어 소스 목록과 미디어 출력 목록이 포함됩니다. 이 목록을 구성하여 프로젝트에서 비디오 입력을 가져오고 캡처를 전송할 위치를 결정합니다. 예를 들어 AJA 미디어 카드에서 입력을 받도록 프로파일을 하나 구성하고, Blackmagic Design 카드나 디스크의 파일에서도 입력을 받도록 두 번째, 세 번째 프로파일을 구성할 수 있습니다. 하나의 미디어 프로파일에서 서로 혼합해 사용할 수도 있습니다. 예를 들어 하나의 미디어 프로파일에서 파일과 SDI 피드 둘 다 입력을 받도록 할 수 있습니다.
- 미디어 프레임워크 유틸리티 플러그인(Media Framework Utilities Plugin) 을 설치하면 프로젝트의 프로젝트 세팅(Project Settings) 패널이 비슷한 입력과 출력을 포함합니다. 미디어 프로파일의 입력 목록에 있는 각 번호 항목은 프로젝트 세팅의 입력 목록의 같은 번호와 일치하며, 출력 목록도 마찬가지입니다. 프로젝트 세팅의 목록 항목 각각이 프로젝트의 프록시 미디어 소스 또는 프록시 미디어 에셋을 가리키도록 구성합니다.
- 그런 다음 프로젝트 콘텐츠에 미디어 소스 또는 미디어 출력을 구성해야 할 때마다 이 동일한 프록시 미디어 에셋을 레퍼런스합니다. 예를 들면 다음과 같습니다.
- 미디어 번들 또는 미디어 플레이어를 구성할 때 파일, 스트림, 또는 SDI 입력을 직접 나타내는 미디어 소스가 아니라 그 미디어 프록시 에셋 중 하나를 레퍼런스합니다.
- 마찬가지로 미디어 캡처를 구성할 때 출력을 AJA 또는 Blackmagic 미디어 출력으로 직접 보내는 대신 프록시 미디어 출력으로 전송합니다. 위와 같이 언리얼 에디터의 미디어 캡처(Media Capture) 패널에서나 런타임에서 Create Media Capture 블루프린트 노드를 호출할 때 이를 수행할 수 있습니다. 프로젝트 세팅의 출력 목록이 동일한 프록시 미디어 출력에 대한 레퍼런스를 포함하도록 구성한 경우 캡처는 앞서 미디어 프로파일에서 환경설정했던 일치하는 인덱스가 있는 출력으로 전달됩니다.
프록시 미디어 소스와 프록시 미디어 출력 에셋은 자체에는 중요한 환경설정 프로퍼티가 들어 있지 않습니다. 이는 채널 역할만을 수행합니다. 즉, 미디어 프로파일에 설정된 입력 및 출력 환경설정을 해당 입력 및 출력이 프로젝트의 다른 곳에서 다른 에셋에 의해 실제로 사용되거나 생성되는 위치로 연결하는 수단입니다.
활성 미디어 프로파일 선택 및 저장하기
언리얼 엔진 또는 언리얼 에디터에 프로젝트가 로드될 때마다 활성 미디어 프로파일은 없거나 하나만 있을 수 있습니다.
언리얼 에디터에서 프로젝트를 연 상태로 메인 레벨 에디터의 툴바에서 미디어 프로파일 메뉴를 통해 활성 미디어 프로파일을 선택합니다.
미디어 프로파일은 항상 언리얼 엔진 프로젝트에 저장되는 에셋입니다. 그러나 어느 미디어 프로파일이 활성인지에 대한 선택은 프로젝트 안이 아닌 각 컴퓨터에 저장됩니다. 즉, 지정된 컴퓨터에서 지정된 프로젝트에 대해 미디어 프로파일을 설정한 후에는 (미디어 하드웨어 또는 환경설정이 바뀌지 않았다면) 다시 바꿀 필요가 없습니다.
반면 프로젝트의 패키징된 버전을 실행할 때 어떤 미디어 프로파일이 활성인지에 대한 선택은 항상 스타트업 미디어 프로파일(Startup Media Profile) 세팅에 의해 이뤄지며, 이 세팅은 프로젝트 세팅(Project Settings) 창의 플러그인(Plugins) > 미디어 프로파일(Media Profile) 에서 찾을 수 있습니다.
이미지를 클릭하면 확대됩니다.
미디어 프로파일 및 프록시 시작하기
여기서는 미디어 프로파일을 두 개 구성합니다. 하나는 로컬 무비 파일에서 입력을 재생하고, 다른 하나는 SDI 카드의 라이브 비디오 피드를 재생합니다. 별도의 미디어 번들을 둘 구성하여 레벨에서 비디오를 재생합니다. 마지막으로 프록시 미디어 소스를 사용하여 미디어 프로파일에 환경설정된 소스의 입력을 미디어 번들로 리디렉션합니다.
전제 조건:
- 미디어 프로파일 및 프록시 에셋은 미디어 프레임워크 유틸리티(Media Framework Utilities) 플러그인에 의해 제공됩니다. 이 플러그인이 설치되어 있어야 합니다.
- 또한 AJA 미디어 또는 Blackmagic Design 하드웨어 중 하나에 대한 퀵스타트 가이드를 완료해야 합니다.
아래 설명된 것과 아주 유사한 작동 예시를 보려면 에픽게임즈 런처의 샘플(Samples) 탭에서 이용 가능한 버추얼 스튜디오 쇼케이스를 참고하세요.
-
먼저 프록시 미디어 소스 에셋을 생성합니다. 콘텐츠 브라우저 에 우클릭하고 컨텍스트 메뉴에서 미디어(Media) > 프록시 미디어 소스(Proxy Media Source) 를 선택합니다.
이미지를 클릭하면 확대됩니다.
새 에셋을 VideoProxyInA 로 명명합니다.
-
이전 단계를 반복하여 프록시 미디어 소스 에셋을 하나 더 만들고 VideoProxyInB 로 명명합니다.
-
새 미디어 번들 에셋을 생성합니다. 콘텐츠 브라우저 에서 우클릭하고 미디어 > 미디어 번들(Media Bundle) 을 선택합니다.
이미지를 클릭하면 확대됩니다.
새 에셋을 MediaBundleA 로 명명합니다.
-
새 미디어 번들 에셋을 더블클릭하여 편집합니다.
-
디테일 패널에서 미디어 소스(Media Source) 세팅을 찾고 드롭다운 목록에서 프록시 미디어 소스 를 선택합니다.
이미지를 클릭하면 확대됩니다.
-
소스 카테고리를 펼치고 프록시 가 이전에 생성한 VideoProxyInA 에셋을 레퍼런스하도록 설정합니다.
이미지를 클릭하면 확대됩니다.
-
이전 단계를 반복하여 다른 미디어 번들 에셋을 만듭니다. 이번에는 MediaBundleB 로 명명하고, 그 소스 프록시를 VideoProxyInB 로 설정합니다.
여기서 권장하는 VideoProxyInA 및 MediaProfileA 같은 에셋 이름은 다양한 에셋 간의 관계를 명확히 하는 데 도움이 됩니다. 그러나 직접 만들 때는 미디어 프록시 및 미디어 번들이 처리해야 하는 콘텐츠 타입을 더욱 자세히 설명하는 이름을 짓는 것이 좋습니다. 이러한 에셋 이름은 환경설정 및 미디어 캡처 창 같은 곳에 표시되므로 프로젝트를 작업하는 전체 팀이 이해할 수 있도록 정하는 것이 좋습니다.
-
메인 메뉴에서 편집(Edit) > 프로젝트 세팅(Project Settings) 을 선택합니다. 플러그인 > 미디어 프로파일 섹션에서 고급 옵션을 펼칩니다.
이미지를 클릭하면 확대됩니다.
-
미디어 소스 프록시 목록에 두 항목을 추가합니다. 하나는 VideoProxyInA 를, 다른 하나는 VideoProxyInB 를 레퍼런스하도록 설정합니다.
이미지를 클릭하면 확대됩니다.
-
이제 디스크의 파일에서 비디오를 재생하는 새 미디어 파일을 생성하고 FileProfile 로 명명합니다. 그 방법은 두 가지입니다. * 콘텐츠 브라우저 에서 우클릭하고 컨텍스트 메뉴에서 미디어 > 미디어 프로파일 을 선택한 다음 에셋 이름을 변경합니다.
이미지를 클릭하면 확대됩니다.
* 툴바의 프로파일 선택 버튼에서 새 미디어 프로파일 생성(New Empty Media Profile) 을 선택하고 새 에셋의 경로와 이름을 설정합니다.
- 새 미디어 프로파일이 자동으로 열리지 않으면 더블클릭하여 편집합니다.
미디어 소스 세팅을 찾아 목록에 새 엘리먼트를 두 개 추가합니다. 목록의 각 항목을 파일 미디어 소스(File Media Source) 로 설정하고 각각에 다른 파일 경로(File Path) 를 설정합니다.
이미지를 클릭하면 확대됩니다.
- 이전 단계를 반복하여 두 번째 미디어 프로파일을 만들고 LiveFeedProfile 로 명명합니다. 이는 컴퓨터에 연결된 AJA 또는 Blackmagic 디바이스에서 비디오를 가져옵니다. 예를 들면 다음과 같습니다.
이미지를 클릭하면 확대됩니다.
각 미디어 프로파일은 타임코드 제공자와 젠록 제공자를 설정하는 기능도 제공합니다.
이는 프로젝트 세팅 패널에서 제공되는 타임코드 제공자(TimecodeProvider) 및 커스텀 타임스텝(Custom TimeStep) 세팅과 동일한 효과입니다. 그러나 미디어 프로파일에서 이 값을 설정하면 해당 미디어 프로파일이 활성 상태일 때만 프로젝트 세팅 을 오버라이드합니다. 자세한 내용은 타임코드와 젠록을 참고하세요.
- 툴바의 프로파일 선택 버튼을 사용하여 위에서 만든 FileMediaProfile 을 선택합니다.
- 두 미디어 번들을 레벨 뷰포트에 드래그 앤 드롭합니다. 파일에서 로드되거나 SDI 연결에서 수신된 비디오가 표시되기 시작합니다.
이미지를 클릭하면 확대됩니다.
- 이제 툴바의 미디어 프로파일 선택 툴을 사용하여 두 미디어 프로파일을 전환하면 클릭 한 번에 미디어 소스(선택에 따라 타임코드 및 젠록 세팅도)를 쉽게 변경할 수 있습니다.
프록시 미디어 출력 사용
여기서는 이전 섹션에서 만든 미디어 프로파일 구성을 확장합니다. 언리얼 에디터(또는 런타임의 언리얼 엔진)에서 비디오 피드를 캡처하고 그 피드를 프록시 미디어 출력을 거쳐 미디어 프로파일에 정의한 출력 환경설정으로 라우팅하겠습니다. 전체 프로세스는 미디어 소스 구성과 매우 유사합니다. 즉, 프록시 에셋을 만들고 프록시를 레퍼런스하도록 프로젝트 세팅을 업데이트한 다음 미디어 프로파일에 실제 출력 디바이스를 환경설정합니다.
-
먼저 프록시 미디어 출력 에셋을 생성합니다. 콘텐츠 브라우저 에 우클릭하고 컨텍스트 메뉴에서 미디어 > 프록시 미디어 출력 을 선택합니다.
이미지를 클릭하면 확대됩니다.
새 에셋을 VideoProxyOut 으로 명명합니다.
-
메인 메뉴에서 편집 > 프로젝트 세팅 을 선택합니다. 플러그인 > 미디어 프로파일 섹션에서 고급 옵션을 펼칩니다.
-
미디어 출력 프록시 목록에 항목을 추가하고 해당 출력 프록시가 VideoProxyOut 를 가리키도록 설정합니다.
-
이전 섹션에서 만든 LiveFeedProfile 을 더블클릭하고 미디어 출력 목록에 새 항목을 추가합니다. 비디오 피드를 컴퓨터에 연결된 AJA 또는 Blackmagic 디바이스의 포트로 전송하도록 구성합니다.
이미지를 클릭하면 확대됩니다.
-
메인 메뉴에서 창(Window) > 미디어 캡처 를 선택합니다.
-
필요한 경우 뷰포트 캡처(Viewport Captures) 목록에 새 항목을 추가하고, 그 미디어 출력 세팅이 VideoProxyOut 에셋을 가리키도록 설정합니다.
![Set the Proxy in the Media Capture22-new-entry-viewport-captures_ue5.png "Set the Proxy in the Media Capture")
-
캡처 를 클릭하여 피드 캡처를 시작하고 프록시를 통해 AJA 또는 Blackmagic 디바이스로 전송합니다.
이 시점에서 현재 미디어 프로파일을 FileVideoProfile 로 전환하면 캡처가 멈추는데, FileVideoProfile 의 경우 해당 미디어 출력 목록의 0 항목에 출력이 환경설정되어 있지 않기 때문입니다.
-
비디오 피드를 런타임에서 캡처하고 프록시를 통해 보내려면 AJA 미디어 또는 Blackmagic Design 하드웨어 퀵스타트 가이드의 지시를 그대로 따라야 합니다. 유일한 차이점은 AjaMediaOutput 또는 BlackmagicMediaOutput 으로의 오브젝트 레퍼런스인 변수를 사용하는 대신, 캡처를 전송하려는 ProxyMediaOutput 으로의 오브젝트 레퍼런스를 사용하는 것입니다. 그런 다음 이 ProxyMediaOutput 변수를 Create Media Capture 노드의 입력으로 사용하면 됩니다. 예를 들면 다음과 같습니다.
이미지를 클릭하면 확대됩니다.
최종 결과
이제 입력 및 출력 피드 환경설정이 각기 다른 두 개의 미디어 프로파일을 구성했습니다. 각 프로파일은 미디어 프록시 에셋을 사용하여 비디오 피드를 사용 또는 생성하는 다른 미디어 프레임워크 에셋에 입력 및 출력 환경설정을 매핑합니다. 이 예시 환경설정이 사용하려는 상황에 꼭 맞지 않을 수 있습니다. 그러나 이 구성 단계를 익히고 나면 똑같은 기본 기능을 자신의 필요에 따라 확장할 수 있을 것입니다.