언어:
페이지 정보
수준별:
엔진 버전:
언리얼 엔진

미디어 프레임워크 개요

언리얼 엔진

Media Framework (미디어 프레임워크)는 언리얼 엔진 4(UE4) 안에서 여러가지 애셋을 사용하여 비디오 재생을 가능하도록 해줍니다. Media Player (미디어 플레이어) 애셋 안에서 비디오 스크러빙, 일시정지, 되감기가 가능할 뿐만 아니라, C++ 또는 블루프린트 비주얼 스크립팅 를 통해 제어할 수도 있습니다. 레벨의 표면에 비디오를 재생시키거나, UMG 로 UI 요소를 만들어 플레이어에게 비디오 재생을 제어할 수 있도록 하려는 경우, 먼저 Media Source (미디어 소스)를 지정하여 엔진에서 미디어 애셋을 찾을 수 있도록 해야 합니다.

미디어 소스 유형

여러가지 다양한 미디어 소스 애셋으로 미디어 위치를 정의할 수 있습니다. 프로젝트의 일부로 포함된 파일이 있거나, 웹사이트의 미디어를 스트리밍하거나, 플랫폼 전용 미디어를 사용하거나, 비디오 재생 전 소스를 정의해 줘야 합니다. 미디어 소스 추가는 콘텐츠 브라우저 안에서 신규 추가 버튼을 누른 뒤 미디어 섹션 아래에서 원하는 소스 유형을 지정하면 됩니다.

MediaSource.png

파일 미디어 소스

MediaSource_File.png

File Media Source (파일 미디어 소스) 애셋은 디바이스나 공유 로컬 네트워크 파일에 저장된 미디어 파일에 사용됩니다. File Path (파일 경로) 섹션에서 미디어 파일이 있는 경로를 지정합니다.

미디어 파일은 어디 있어도 되지만, 전형적으로 미디어 파일은 프로젝트의 Content/Movies 폴더에 옮긴 뒤 미디어 파일을 지정해 주는 것이 좋습니다. 그러면 그 미디어 파일이 프로젝트와 함께 정상 패키징됩니다. 이 위치 밖의 파일을 지정하는 경우 (위와 같이) 노랑색 느낌표로 경고가 보이기도 할 것입니다.

이러한 소스 애셋 유형은 (고급 옵션 부분 아래) Precache File (파일 미리 캐시) 옵션을 켜서 전체 미디어 파일을 메모리에 로드한 뒤 재생하도록 할 수 있습니다. 파일 크기에 따라 캐시에 걸리는 시간이 달라질 수 있으니, 이 옵션을 선택할 때는 그 부분을 고려하시기 바랍니다. 각 파일 미디어 소스 애셋은 (아래 그림처럼) 플랫폼 별로 네이티브 미디어 플레이어 (미디어 재생에 사용되는) 플러그인 오버라이드를 지정하거나, 플레이어 플러그인이 자동 선택되도록 할 수도 있습니다.

미리 캐시 기능은 모든 플레이어에 지원되지 않을 수 있으며, 현재 MfMedia, PS4Media, WmfMedia 플레이어 플러그인에만 지원됩니다.

PlatformOverride.png

파일 미디어 소스 애셋 작업 관련 안내는 비디오 파일 재생 문서를 참고하세요.

이미지 (Img) 미디어 소스

ImgMediaSource.png

Img Media Source (이미지 미디어 소스) 애셋은 공유 로컬 네트워크나 디바이스에 저장된 이미지 시퀀스를 재생하는 데 사용됩니다. Sequence Path (시퀀스 경로) 칸은 시퀀스의 첫 이미지를 레퍼런싱하는 데 사용됩니다. 이미지는 반드시 지원되는 순차 포맷이어야 (예: MyImage01.exr 또는 MyImage_01.exr) 엔진에서 시퀀스의 나머지 이미지를 발견해 채울 수 있습니다.

시퀀스의 이미지의 경우 고급 옵션의 일부로 Frames Per Second Override (초당 프레임 수 대체값)과 Proxy Overrides (프록시 대체값)을 지정할 수 있습니다. 다른 소스 애셋과 마찬가지로, Player Overrides (플레이어 대체값) 섹션에서 미디어 재생 플랫폼 유형에 따라 플레이어 플러그인을 정의할 수 있습니다.

이미지 미디어 소스 애셋 작업 관련 안내는 이미지 시퀀스 재생NEW! 문서를 참고하세요.

스트림 미디어 소스

MediaSource_Stream.png

Stream Media Source (스트림 미디어 소스) 애셋은 미디어의 소스로 URL 을 받은 뒤, 인터넷에서 끌어옵니다. 현재 YouTube 나 Dailymotion 스타일의 URL 링크는 지원되지 않으며, 호스팅되는 파일에 대한 직접 링크를 사용해야 합니다. 파일 미디어 소스 애셋처럼 스트림 미디어 소스 애셋도 플랫폼 별로 네이티브 미디어 플레이어 플러그인 오버라이드를 지정하거나, 플레이어 플러그인이 자동 선택되도록 할 수도 있습니다.

스트림 미디어 소스 애셋 작업 관련 안내는 비디오 스트림 재생 문서를 참고하세요.

플랫폼 미디어 소스

MediaSource_Platform.png

Platform Media Source (플랫폼 미디어 소스) 애셋은 미디어 소스를 플랫폼 단위로 덮어쓰는 기능을 지원합니다. 예를 들어 Android 디바이스나 PS4 에서만 특정 비디오를 재생하고 싶다 칩시다. Media Sources (미디어 소스) 섹션에서 어느 플랫폼에서 어떤 비디오를 재생할지 지정할 수 있습니다. 플랫폼 미디어 소스를 사용할 때는, 모든 플랫폼에 미디어 소스를 선택해야 합니다.

플랫폼 미디어 소스 작업 관련 안내는 플랫폼 전용 미디어 재생NEW! 문서를 참고하세요.

미디어 플레이리스트

미디어 소스 애셋은 개별 재생이 가능한 반면, Media Playlist (미디어 플레이리스트) 애셋은 다수의 미디어 소스를 순서대로 재생할 수 있습니다. 미디어 소스 애셋을 몇 개 만든 뒤, 미디어 플레이리스트에 추가하면, 정의한 순서대로 각 애셋을 돌아가며 자동 재생해 줍니다. 미디어 플레이리스트 애셋 생성은 콘텐츠 브라우저 에서 신규 추가 버튼을 누른 뒤 미디어 섹션 아래에서 찾을 수 있습니다.

MediaPlaylistButton.png

미디어 플레이리프스트를 만들고 연 뒤에는, 미디어 플레이리스트 에디터가 열립니다:

CustomizedPlaylist.png

4.18.1 부로 Loop (반복) 옵션이 더이상 플레이리스트를 반복 재생하지 않습니다. 플레이리스트 반복을 위해서는, 미디어 플레이어 애셋 안에서 Loop (반복) 옵션을 설정하면 됩니다.

미디어 플레이리스트 에디터에서, 포함시킬 소스 애셋을 정의하고 재생 순서를 정의할 수 있습니다. 생성한 미디어 소스 애셋은 하단의 미디어 라이브러리 창에 표시되며, 여기서 더블클릭 (또는 Items 섹션 아래 + 버튼을 클릭)하면 플레이리스트 마지막에 추가됩니다. 미디어 플레이리스트는 블루프린트 스크립트를 통해 지정하지 않는 한 각 미디어 소스 유형과 순서 재생을 혼합해서 사용할 수 있습니다.

미디어 플레이리스트 애셋 작업 관련 안내는 미디어 플레이리스트 사용 문서를 참고하세요.

미디어 소스 컴포넌트

비디오에 연결된 오디오를 듣기 위해서는, Media Source (미디어 소스) 컴포넌트를 만들어 레벨에 미디어를 재생중인 액터 또는 블루프린트에 추가해 줘야 합니다.

언리얼 엔진 4.18 이전 사운드 생성에 사용되던 Media Sound Wave (미디어 소스 웨이브) 애셋이 폐기되었습니다. 현재 이 애셋을 사용중이라면, 레벨에서 삭제한 뒤 미디어 사운드 컴포넌트와 할당된 미디어 플레이어를 연결해 주어야 비디오에 맞는 오디오가 재생될 것입니다.

아래 레벨에 스태틱 메시 액터가 있으며, 디테일 패널에서 미디어 사운드 컴포넌트를 추가했습니다.

MediaSoundComponent.png

미디어 사운드 컴포넌트를 액터나 블루프린트에 추가한 이후에는, 미디어 사운드 컴포넌트를 미디어 플레이어 애셋에 추가해 줘야 합니다.

MediaSoundComponent_AssignedPlayer.png

미디어 사운드 컴포넌트의 디테일 패널에는 Channels (채널), Attenuation (감쇠), Concurrency (동시재생) 및 기타 오디오 관련 세팅이 제공되어 사운드 인지 방식을 정의할 수 있습니다. 미디어 플레이어 애셋에 링크되면, 비디오 소스에 연결된 오디오는 비디오와 함께 자동 재생됩니다. 전형적으로 새로 생성된 미디어 사운드 컴포넌트는 기본 세팅으로 놔둬도 됩니다. 하지만 사운드 인지 방식을 보다 세밀하게 제어할 필요가 있는 경우, 동시재생, 감쇠 및 기타 세팅을 조절하면 됩니다.

Surround (서라운드) 채널 세팅은 현재 오디오 믹서에 지원되지 않으며, 앞으로 발표될 엔진 버전에 계획되어 있습니다.

미디어 텍스처

Media Texture (미디어 텍스처) 애셋은 미디어 플레이어 애셋에서 비디오 트랙을 렌더링하는 데 사용됩니다.

MediaTexture.png

미디어 사운드 컴포넌트는 오디오를 제공하는 반면, 미디어 텍스처는 미디어 소스 애셋에서 비주얼을 제공해 줍니다. 미디어 텍스처 애셋은 머티리얼 안에 포함시킬 수 있으며, 나중에 빌보드, TV, 모니터와 같은 레벨 내 메시에 적용시켜 게임 월드 내 해당 오브젝트 위에 비디오가 재생되는 것처럼 보이게 만들 수 있습니다. 미디어 텍스처 애셋을 만들 때, 디테일 패널의 Medial Player (미디어 플레이어) 아래 레퍼런싱할 미디어 플레이어를 정의해 줘야 합니다.

MediaTextureWindow.png

아래에서, 미디어 텍스처 애셋을 포함하는 머티리얼을 생성하여 레벨의 스태틱 메시에 적용했습니다. 텍스처 에디터 안에서, 미디어 텍스처에는 레벨 내 머티리얼에 나타나는 것과 같은 재생 위치가 표시됩니다. 표준 텍스처 프로퍼티 에 추가로 미디어 텍스처는 Clamped (범위제한), Mirror (미러링), 또는 World (월드)의 X 및 Y 축 Addressing (주소) 값을 받습니다.

SampleMediaTexture.png

머티리얼은 Texture Sample 노드를 사용하여 미디어 텍스처 애셋을 레퍼런싱합니다. 그 Texture Sample 노드에서, Sampler Type (샘플러 유형) 프로퍼티를 External (외부)로 해 줘야 재생됩니다. 이 세팅은 엔진에서 이루어지는 최적화로, 미디어 파일 디코딩에 사용됩니다.

SamplerType.png

4.18 이전 미디어 텍스처를 사용해서 만들어진 머티리얼은 Sampler Type (샘플러 유형) 프로퍼티를 External (외부)로 수동 설정해야 할 수 있습니다.

미디어 플레이어 애셋

미디어 소스 또는 미디어 플레이리스트가 있으면, Media Player (미디어 플레이어) 애셋을 사용하여 애셋을 재생할 수 있습니다. 미디어 플레이어 애셋은 미디어 텍스처를 사용하여 미디어 재생 부분을 만들고 미디어 사운드 웨이브를 사용하여 그 비디오에 연결된 오디오를 만들어야 합니다. 미디어 플레이어 애셋 생성 옵션은 콘텐츠 브라우저 안에서 신규 추가 버튼을 누른 뒤 미디어 섹션 아래에서 찾을 수 있습니다.

MediaPlayer.png

미디어 플레이어 애셋을 만들 때, 미디어 플레이어 생성 창(아래 그림)이 나타나 애셋을 생성하여 미디어 플레이어에 링크시킬지도 물어옵니다. 이를 통해 만들고자 하는 미디어 플레이어에 연결된 미디어 텍스처를 자동 생성하여 할당하는 것이 가능합니다.

CreateMediaPlayer.png

미디어 플레이어 애셋에 더블클릭 하면 미디어 플레이어 에디터 가 열립니다:

MediaPlayerWindow.png

미디어 플레이어 에디터에서는, 프로젝트의 모든 미디어 소스 애셋을 미리보고, (지원되는 경우) 미디어를 재생, 일시정지, 되감기, 빨리감기 할 수 있습니다. 미디어 플레이어 애셋에 대한 재생 (미디어를 열었을 때 자동 재생, 무한반복 재생, 플레이리스트 사용 시 무작위 재생 여부 등의) 옵션을 정의할 수도 있습니다.

미디어 에디터와 그 옵션 관련 자세한 내용은 미디어 에디터 레퍼런스NEW! 문서를 참고하세요.

미디어 애셋 & 스크립팅

미디어 플레이어 애셋 구성을 완료하고 미디어 텍스처와 (비디오에 오디오가 있는 경우) 미디어 사운드 컴포넌트를 연결한 후에는, 게임 세션 도중 재생하는 것이 가능합니다. 게임 내 미디어 재생을 위해서는, 먼저 블루프린트나 C++ 를 통해 미디어 플레이어 애셋을 레퍼런싱해줘야 합니다. 그 방법은, 아무 블루프린트에서 변수 를 만들어 미디어 플레이어 유형으로 하고 변수의 Default Value (기본값)을 원하는 미디어 플레이어 레퍼런스로 설정해 주면 됩니다.

MediaPlayerDetailsSet.png

미디어 플레이어로의 레퍼런스를 정의한 후에는, 미디어 소스 유형에 따라 Open 함수를 호출할 수 있습니다.

MediaPlayerOpen.png

옵션

설명

Open File

파일 열기 - 컴퓨터의 지정한 위치에 있는 미디어 파일을 엽니다.

Open Playlist

플레이리스트 열기 - 지정된 플레이리스트의 첫 번째 미디어 소스를 엽니다.

Open Playlist Index

플레이리스트 인덱스 열기 - 지정된 플레이리스트 안의 특정 미디어 소스를 엽니다.

Open Source

소스 열기 - 지정된 미디어 소스를 (파일 미디어, 스트림 미디어, 플랫폼 미디어) 엽니다.

Open URL

URL 열기 - 지정된 미디어 URL 을 엽니다.

Reopen

다시 열기 - 현재 열린 미디어 또는 플레이리스트를 다시 엽니다.

새로 생성된 미디어 플레이어 애셋에는 Play on Open (열면 재생) 옵션이 기본으려 켜져 있어서, 미디어 소스를 열면 비디오가 자동으로 재생되기 시작합니다. 미디어 플레이어 애셋에서 이 옵션을 해제하면 소스를 열었을 때 자동 재생되지 않고 블루프린트나 C++ 를 통해 명시적으로 호출했을 때만 재생을 시작합니다.

UncheckPlayOnOpen.png

미디어를 여는 데 성공했을 때 자동 재생되지 않도록 하는 또 한가지 방법은, Play 블루프린트 이벤트에 걸어주는 것입니다.

PlayWhenPressed.png

Event BeginPlay 에서, 미디어 플레이리스트를 열고 Right Mouse Button (오른쪽 마우스 버튼)을 Pressed (누르기)하면 재생 준비가 되어있는 한 미디어 플레이어 를 재생합니다.

미디어 소스를 열었을 때 자동 재생을 하지 않고 Play 함수를 통해 재생을 시작하려는 경우, Open Source 나 Open Playlist 호출 이후 Play 호출을 바로 연결시켜 주지 않는 것이 좋습니다. 왜냐하면 미디어 소스를 여는 데 시간이 약간 걸릴 수 있으므로, Play 명령이 false 를 반환하고 무비 재생이 예상대로 되지 않을 수 있기 때문입니다. 이런 경우, On Media Opened 호출에 묶인 바인딩 이벤트 를 사용하는 것이 나을 수 있습니다.

OnMediaOpened.png

위에서, 스트림 미디어 소스를 열고 On Media Opened 에 미디어 플레이어를 바인딩하면 완전히 열렸을 때 미디어를 재생하는 이벤트가 발동됩니다.

여러가지 재생 (예를 들어 일시정지 또는 종료와 같은) 상태에 미디어 플레이어 레퍼런스가 있는 다른 함수를 바인딩할 수 있습니다. 미디어 플레이어 레퍼런스로부터 여러가지 다른 함수를 호출할 수도 있습니다. 예로, 비디오 일시정지가 가능한지, 재생중인지, 재생 속도 정보 접근 등입니다. 이 옵션들은 미디어 플레이어 레퍼런스를 끌어놓은 뒤 블루프린트 컨텍스트 메뉴의 Media Player (미디어 플레이어) 섹션에서 확인할 수 있습니다.

MediaPlayerNodes.png