비디오 스트림 재생

인터넷의 스트리밍 비디오를 UI 요소 안에 재생하는 법입니다.

Windows
MacOS
Linux

Stream Media Source (스트림 미디어 소스)는 언리얼 엔진 4 (UE4) 안에서 지원되는 URL 포맷의 비디오 스트리밍을 가능하게 해주는 애셋입니다. 스트림을 정의해 두고, UE4 안에서 (미디어 텍스처 가 할당된) 미디어 플레이어 애셋을 로드하고 재생하면 레벨 여러 곳에 할당할 수 있습니다. 스트림은 UI 요소의 일부로 로드 및 재생 가능하며, 전체화면 재생은 물론 (TV 와 같은) 스태틱 메시에 적용한 뒤 레벨 안에서 재생하도록 할 수도 있습니다.

여기서는 언리얼 모션 그래픽 (UMG)를 사용하여 스트리밍 비디오를 전체화면으로 재생할 UI 요소를 만들어 보겠습니다.

StreamSourceHero.png

단계

여기서는 블루프린트 삼인칭 템플릿시작용 콘텐츠 를 포함시켜 생성한 프로젝트를 사용합니다.

  1. 콘텐츠 브라우저 에서 소스 패널 을 펼친 뒤 콘텐츠 폴더 아래 Media 라는 폴더를 새로 만듭니다.

    StreamMedia_01.png

  2. 빈 Media 폴더 안에 우클릭한 뒤 미디어 아래 스트림 미디어 소스 를 선택한 뒤 애셋 이름을 MediaStream 이라 합니다.

    StreamMedia_02.png

  3. MediaStream 을 열고 원하는 Stream URL 을 입력합니다.

    StreamMedia_03.png

    링크시킬 URL 파일이 없는 경우, 샘플 비디오 에 우클릭하고 링크 주소를 복사한 뒤 Stream URL 칸에 붙여넣습니다.

    Stream URL 은 반드시 지원되는 포맷으로 직접 링크를 걸어야 비디오가 재생됩니다. 예를 들어 PS4Media (PS4) 는 최신 버전에서 HLS 를 통한 MP4 만 지원하는 반면, WmfMedia (Windows) 는 여러 다른 스트림 소스를 지원할 수 있습니다. 플랫폼/플레이어 플러그인 별 지원되는 포맷 관련 상세 정보는, 미디어 프레임워크 테크니컬 레퍼런스 문서를 참고하세요.

  4. Media 폴더 안에 우클릭한 후 미디어 아래 미디어 플레이어 애셋을 선택합니다.

    StreamMedia_04.png

  5. 미디어 플레이어 생성 창에서 Video output Media Texture asset (비디오 출력 미디어 텍스처 애셋) 옵션을 체크하고 OK 를 클릭합니다.

    StreamMedia_05.png

    그러면 재생에 필요한 이 미디어 플레이어 애셋에 링크된 미디어 텍스처 애셋을 자동 생성 및 연결합니다.

  6. 새로운 미디어 플레이어 애셋 이름을 MyPlayer 라 짓습니다. 생성된 미디어 텍스처 애셋에 자동 적용됩니다.

    StreamMedia_06.png

  7. 미디어 폴더에 우클릭한 뒤, 유저 인터페이스 아래 Widget Blueprint (위젯 블루프린트)를 선택하고 HUD 라 합니다.

    StreamMedia_07.png

    위젯 블루프린트는 UMG UI 디자이너 와 함께 사용하여 언리얼 엔진 4 안의 UI 요소를 만드는 것으로, 여기에 스트리밍 비디오를 적용할 것입니다.

  8. HUD 위젯 블루프린트 안의 팔레트 창에서 Image 를 끌어 그래프에 놓고 그리드 종횡비에 맞게 늘입니다.

    StreamMedia_08.png

    이 이미지에 미디어 텍스처를 적용하면, 게임을 플레이할 때 플레이어의 뷰포트를 이미지가 가득 채웁니다 (전체화면 재생되는 비디오가 생성됩니다).

  9. Image 에 대한 디테일 패널에서 Appearance 아래 Brush 를 펼친 뒤 ImageMyPlayer_Video 로 설정합니다.

    StreamMedia_09.png

  10. Image 에 대한 디테일 패널에서 Slot 아래 Anchors (앵커) 드롭다운을 클릭한 뒤 가운데 옵션을 선택합니다.

    StreamMedia_08b.png

    그러면 뷰포트 크기와 상관 없이 이미지가 항상 뷰포트 중간에 고정됩니다.

  11. HUD 위젯 블루프린트를 닫고, 레벨 에디터 툴바에서 블루프린트 - 레벨 블루프린트 열기 를 선택합니다.

    StreamMedia_10.png

  12. 새 변수를 만들어 MediaPlayer 라 하고 유형은 Media Player Reference 로 한 뒤, Default ValueMyPlayer 미디어 플레이어 애셋으로 설정합니다.

    StreamMedia_11.png

    MediaPlayer 변수의 Default Value 확인을 위해서는 컴파일 클릭을 해야할 수 있습니다.

  13. Ctrl 키를 누르고 MediaPlayer 변수를 그래프에 끌어놓아 이 변수의 Get 노드를 생성한 뒤, 우클릭하고 Event Begin Play 노드를 추가합니다.

    StreamMedia_12.png

    게임이 시작되면, HUD 생성 및 표시 프로세스를 거쳐 스트림에 대한 사운드 구성을 한 뒤 스트림을 열어 재생되도록 하겠습니다.

  14. 우클릭 후 Create Widget 노드를 추가하고 ClassHUD 로 설정한 뒤 Return Value 에서 Add to Viewport 를 사용하여 그림처럼 연결합니다.

    StreamMedia_13.png

  15. Add to Viewport 노드 뒤에 우클릭 후 Add Media Sound Component 를 사용하여 디테일 패널에서 Media PlayerMyPlayer 로 설정합니다.

    StreamMedia_14.png

    비디오와 함께 오디오를 듣기 위해서는, 미디어 사운드 컴포넌트에 미디어 플레이어 애셋을 사용하도록 해야합니다. 여기서는 실행시간에 동적으로 생성 및 추가하고 있습니다. 하지만 기존에 레벨에 있는 액터 또는 컴포넌트 패널에서 블루프린트 일부로 이 컴포넌트를 추가할 수도 있습니다.

  16. Add Media Sound Component 노드 뒤 Media Player 레퍼런스 노드에서 Open Source 를 사용하여 Media SourceMediaStream 애셋으로 설정합니다.

    이미지를 클릭하면 원본을 확인합니다.

    노드 망이 완성되었으니, 게임이 시작되면 HUD 가 생성 및 표시되고, 미디어 스트림을 열어 재생하면 사운드가 같이 재생될 것입니다.

  17. 레벨 블루프린트를 닫은 뒤, 플레이 버튼을 클릭하여 레벨에서 플레이합니다.

최종 결과

에디터에서 플레이하면, HUD 위젯 블루프린트의 일부로 비디오가 전체 화면에서 재생되기 시작할 것입니다.

디스크에서 비디오 파일을 재생하는 파일 미디어 소스 를 사용할 때와 마찬가지로, 연결된 미디어 플레이어 애셋에 기본으로 켜지는 옵션인 Play on Open (열리면 재생) 옵션이 설정된 경우, 스트림 미디어 소스는 Open Source 호출시 자동으로 재생됩니다. 비디오 재생이 시작된 후에는 일시정지, 되감기, 중지 등 미디어 플레이어 애셋에 추가로 내릴 수 있는 명령이 있는데, 미디어 플레이어 레퍼런스를 끌어 놓을 때 Media Player 섹션 아래에서 찾을 수 있습니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼