스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
공간 경험에 맞게 비디오 콘텐츠 전송하기
HTTP Live Streaming(HLS)을 사용하여 visionOS를 위한 비디오 콘텐츠를 준비하고 전송하는 방법을 배워봅니다. 현재의 HLS 미디어 전송 프로세스와 3D 콘텐츠를 지원하기 위해 전송 파이프라인을 확장하는 방법을 알아보세요. 공간 미디어 스트리밍을 위한 팁과 기술 및 기존 캡션 제작 워크플로를 어떻게 3D에 적용하는지 알려드립니다. 또한 다양한 비디오에 오디오 트랙을 공유하는 방법과 더욱 몰입적인 비디오 콘텐츠를 위해 공간 오디오를 추가하는 방법을 알아보세요.
챕터
- 0:41 - Deliver 2D content
- 5:20 - Deliver 3D content
리소스
- Apple HEVC Stereo Video Interoperability Profile
- ISO Base Media File Format and Apple HEVC Stereo Video
- Video Contour Map Payload Metadata within the QuickTime Movie File Format
관련 비디오
WWDC23
-
다운로드
♪ 감미로운 인스트루멘탈 힙합 ♪ ♪ 안녕하세요, 전 크리스입니다 AVFoundation 팀의 엔지니어죠 이 세션에 오신 걸 환영합니다 이번 세션의 주제는 공간 경험에 맞춰 스트리밍 콘텐츠를 준비하고 전송하는 방법입니다 HTTP Live Streaming을 사용해 2D 미디어를 생산, 준비 전송하는 단계를 간략히 살펴보겠습니다 HLS라고도 하죠 2D 콘텐츠의 준비와 전송을 다루고 나서는 3D 비디오 콘텐츠로 넘어가서 앞서 다룬 단계의 업데이트 내용과 지원 내용을 다루겠습니다 콘텐츠 파이프라인을 고려해서 비디오, 오디오, 캡션의 미디어 인코딩부터 시작하겠습니다 해당 미디어 리소스는 HLS 전송을 위해 패키징되어야 합니다 이것이 현재 2D 콘텐츠가 전송되는 방식입니다 3D 콘텐츠 전송의 목표는 현재 2D 프로세스를 기반으로 발전시키는 건데요 HLS는 fragmented MP4 시한 메타데이터를 새롭게 지원하게 되어 중요한 적용이 가능해졌습니다 Apple 개발자 웹 사이트의 HTTP Live Streaming 페이지에는 문서, 도구, 예시 스트림 개발자 포럼 등으로 연결되는 링크가 있습니다 이번 세션에서 다루는 내용의 세부 정보도 제공될 예정입니다 2D 오디오비주얼 콘텐츠를 이 플랫폼에 전송하는 방식이 다른 플랫폼에 전송할 때와 같아지는 것이 저희 목적입니다 Apple 미디어 기술인 HTTP Live Streaming AVFoundation, Core Media 등과 ISO 기반 미디어 파일 포맷 같은 표준 기반 포맷을 토대로 빌드해야 가능하죠 MPEG-4도 그런 포맷입니다 이와 동시에 새로운 공간 경험 패러다임을 지원합니다 오디오비주얼 미디어의 재생을 최대로 지원하는 방법을 배우려면 '비디오 재생을 위한 훌륭한 공간 경험 만들기'를 참고하세요 비디오의 경우는 원본 비디오를 인코딩합니다 원하는 비트레이트에 맞게 적절한 길이로 편집하고 색상을 보정하죠 HEVC 등으로 비디오 인코더를 설정할 때 이런 사항들을 선택할 수 있습니다 High Efficiency Video Coding의 약자죠 Apple 플랫폼에 기존의 2D 오디오비주얼 미디어를 전송하는 것은 완벽히 지원되지만 이 재생 기능에 주목하세요 이 플랫폼은 최대 4K 해상도를 지원해서 최고 품질의 비디오를 경험할 수 있습니다 디스플레이의 재생률은 90Hz로 24fps 영상의 경우 자동으로 스페셜 96Hz 모드를 사용할 수 있습니다 표준 및 하이 다이내믹 레인지를 지원합니다 오디오가 비디오에 대응하게 하려면 필요한 원본 오디오 스트림의 수를 확인하고 생성합니다 그 수는 대상으로 하는 언어 집합과 해당 오디오의 역할에 따라 달라집니다 역할에는 주 대화 내용과 음성 해설이 있죠 해당 소스를 HLS로 전송하기 위해 인코딩합니다 공간 음향을 전송하며 예비 스테레오 오디오 트랙을 전송할 수 있습니다 이를 통해 공간 음향을 지원하는 기기에서 훌륭한 경험과 신뢰성 있는 재생이 가능합니다 HLS 개발자 페이지에서는 오디오 준비에 대한 문서 링크를 제공합니다 그리고 캡션이 있습니다 캡션은 자막과 폐쇄 자막을 포함합니다 다양한 언어와 역할을 포괄하기 위해서죠 '자막'이란 언어를 모르는 시청자를 위해 다른 언어로 번역되어 제공되는 대본을 뜻하거나 시간과 장소의 표기를 뜻합니다 폐쇄 자막이란 자막과 비슷하지만 시청자가 음성을 들을 수 없을 때 사용됩니다 폐쇄 자막은 대화뿐만 아니라 효과음이나 기타 관련 음성에 대한 표기를 제공합니다 또한 청각 장애인을 위한 자막인 SDH도 존재하는데 목적은 같습니다 비디오 및 오디오 인코딩과 마찬가지로 HLS에서 지원하는 캡션 파일과 포맷으로 생성해야 합니다 WebVTT가 가장 흔히 쓰이죠 원본 비디오, 오디오, 캡션이 준비되었다면 다음은 패키징입니다 패키징이란 신뢰성 있는 전송을 위해 원본 미디어를 다양한 세그먼트로 변환하는 과정입니다 Apple의 HLS 도구로 가능하며 언급한 HLS 스트리밍 페이지에서 이용 가능합니다 일부 콘텐츠 제공업체는 자체 프로덕션 도구나 하드웨어, 워크플로를 사용할 수 있습니다 그런 업체에 서비스와 도구를 제공하는 공급업체도 있죠 패키징의 목표는 미디어 세그먼트를 생성하고 사용이 증가하도록 미디어 재생 목록을 생성하고 그 모두를 연결하는 다중 변형 재생 목록을 생성하는 겁니다 두 종류의 HLS 미디어 세그먼트가 오늘날 가장 널리 사용됩니다 fragmented MP4 미디어 세그먼트는 이미 인코딩된 비디오 혹은 오디오 무비 파일을 기반으로 생성되며 여러 리소스를 만듭니다 이런 리소스를 미디어 세그먼트라고 합니다 재생 중에 클라이언트 기기가 이런 세그먼트들을 검색하죠 자막 파일도 세그먼팅이 필요합니다 자막 세그먼팅 도구를 사용해서 미디어 세그먼트를 생성합니다 원본 WebVTT 파일을 여러 파일로 분할해 세그먼트 지속 시간을 원하는 대로 맞출 수 있습니다 마지막으로 HLS 리소스 컬렉션은 HTTP 전송을 위해 웹 서버에서 호스팅됩니다 클라이언트에 직접 서비스하는 단일 서버와 콘텐츠 전송 네트워크로 사용되는 원본 서버가 있습니다 CDN이라고도 부르죠 어떤 방식이든 이 리소스들은 클라이언트 기기로 전송되고 재생됩니다 2D 프로덕션과 전송 파이프라인을 알아봤으니 3D 콘텐츠를 살펴봅시다 새로운 특수 기능을 활용하는 차이점을 알아보겠습니다 다시 한번 원본 인코딩 패키징, 전송을 살펴보고 2D와 3D 스테레오스코픽 콘텐츠의 차이를 알아보겠습니다 3D 비디오에 대해 이야기하고 있으니 이 용어를 분석해 보죠 일단 비디오이므로 연속되는 프레임입니다 무비 트랙이나 네트워크 스트림이죠 '3D 비디오'에서의 '3D'는 스테레오스코픽과 같으며 왼쪽 눈용 이미지와 약간 다른 시각의 매우 비슷한 오른쪽 눈용 이미지를 제공하여 만들어집니다 왼쪽과 오른쪽 이미지의 차이를 패럴랙스라고 부르는데 삼차원적인 깊이를 인식하게 합니다 3D 비디오 프레임을 전송하는 여러 방법이 있는데 유용하게 사용될 원칙이 몇 가지 있습니다 모든 스테레오 프레임에 대해 단일 비디오 트랙을 사용하면 2D 비디오 트랙을 사용한 프로덕션 방식을 유지할 수 있습니다 양쪽 이미지 혹은 뷰가 모든 디스플레이 순간에 한 프레임으로 압축되어 있죠 한 프레임에 양쪽 뷰 혹은 스테레오 페어가 있다는 뜻입니다 이는 효율적인 방법으로 Apple 실리콘에서 지원됩니다 그리고 가능한 한 3D 인식이 안 되는 재생으로도 디코딩되어야 합니다 그러면 비디오를 2D 워크플로에서 선보일 수 있습니다 스테레오 프레임을 전송하기 위해서는 멀티뷰 HEVC 즉 'MV-HEVC'를 사용합니다 HEVC의 확장 버전으로 MV는 멀티뷰를 뜻합니다 한 프레임에 하나 이상의 뷰를 포함하여 각 프레임에는 왼쪽과 오른쪽 이미지가 압축되어 있습니다 MV-HEVC는 HEVC 기반이기 때문에 Apple 실리콘이 지원합니다 MV-HEVC는 압축된 각 프레임에 기본 HEVC 2D 뷰가 있습니다 인코딩은 왼쪽과 오른쪽 이미지의 차이 즉 델타를 결정합니다 이 기술은 2D Plus Delta라고 알려져 있으며 2D 디코더가 기본 2D 뷰를 찾아 사용합니다 예를 들면 왼쪽 눈의 뷰를 사용하죠 하지만 3D 디코더는 다른 뷰를 계산하여 해당하는 눈에 맞는 두 가지 뷰를 제공합니다 기본 2D 이미지가 표준 HEVC 기술을 사용해서 효율적입니다 그리고 왼쪽 눈과 오른쪽 눈의 차이는 스테레오 프레임에서만 표현됩니다 비디오 포맷 설명 혹은 MPEG-4 비주얼 샘플 앤트리에는 코딩 유형, 코덱 각 뷰의 크기 등 비디오 프레임을 디코딩하는 데 필요한 세부 정보가 있습니다 비디오 포맷 설명에 새로운 확장 기능이 추가됐습니다 이름은 비디오 확장 사용으로 비디오가 스테레오스코픽이라면 가볍고 쉽게 확인할 수 있습니다 그리고 어느 눈의 스테레오 뷰인지 알 수 있죠 HLS 전송의 경우 양쪽 모두가 해당합니다 새로운 VEXU 설정의 설명은 SDK와 함께 제공됩니다 구조가 발전함에 따라 그 내용도 추가될 겁니다 2D 콘텐츠처럼 3D 비디오도 HEVC를 사용하지만 이 경우에는 MV-HEVC가 스테레오스코픽 뷰를 전송하는 데 필요하죠 2D 프로덕션과 마찬가지로 MV-HEVC로 제작된 로컬 무비를 사용할 수 있으며 2D 비디오와 동일하게 동작합니다 왼쪽과 오른쪽 눈에 해당하는 이미지를 보여주면 스테레오스코픽 깊이를 인식할 수 있고 상대적인 깊이감이 생깁니다
비디오 씬의 객체는 패럴랙스의 정도에 따라 더 가깝거나 멀게 인식됩니다 스테레오스코픽 깊이는 세 가지 영역으로 정의될 수 있습니다 패럴랙스가 없는 평면 화면이 있고 네거티브 패럴랙스는 화면 앞에 객체가 있는 것으로 보이고 포지티브 패럴랙스는 화면 뒤에 객체가 있는 것으로 인식됩니다 캡션이 패럴랙스가 없는 상태로 렌더링되어서 네거티브 패럴랙스와 같은 프레임에 있다면 깊이 충돌이 생겨서 시청할 때 불편함을 유발할 수 있습니다 질문입니다 스테레오스코픽 패럴랙스가 깊이 충돌을 발생시킨다고 할 때 3D 비디오의 캡션 제작은 어떻게 되는 걸까요? 다음 내용이 지원될까요? 캡션이 가로일 때도 재생되고 언어와 상관없이 재생되고 캡션이 세로일 때도 재생되고 사용자가 캡션 크기를 조정하기 위해 손쉬운 사용 설정을 사용하는 경우에도 재생될까요? 정답은 '그렇다'입니다 제가 다음으로 소개할 방법을 사용하면 스테레오스코픽 비디오에도 캡션이 정상적으로 작동합니다 2D와 3D 경험에서 같은 2D 캡션 에셋을 사용할 수 있죠 전에 언급했던 새로운 시한 메타데이터를 사용하면 가능합니다 스테레오스코픽 비디오에서는 깊이 충돌이 생기는 걸 피하고 비디오에 시각적 요소가 겹치는 걸 피해야 합니다 새로운 캡션 포맷을 요구하거나 기존 포맷을 변경하는 대신 각 비디오 프레임의 패럴랙스를 특화할 방법이 있는데요 한 프레임 안에서도 어느 곳은 더 가깝게 어느 곳은 더 멀게 보일 수 있습니다 이를 패럴랙스 컨투어라고 하며 비디오 트랙의 프레임과 동기화된 메타데이터 트랙에 메타데이터로 기록됩니다 만약 3D 비디오를 타일로 분할하고 깊이 패럴랙스를 각 타일에 표현하면 캡션이 스테레오 비디오를 방해하지 않게 할 수 있습니다 재생 중에는 캡션의 패럴랙스가 깊이 충돌을 피하기 위해 자동으로 조정되죠 패럴랙스 비디오 컨투어를 가진 각 메타데이터 항목은 해당 비디오의 2D 타일링을 설명합니다 각 타일의 최소 패럴랙스값을 갖죠 각 비디오 프레임은 컨투어를 설명하는 메타데이터 항목과 연결됩니다 저희는 10x10 타일링을 추천합니다 비디오의 다양한 패럴랙스를 표현하는 데 필요한 스토리지와 해상도 사이에서 밸런스가 좋기 때문입니다 패럴랙스 메타데이터의 생성 방법을 고려해서 각 프레임의 왼쪽과 오른쪽 뷰를 준비하세요 동기화된 두 비디오 트랙으로 제작할 수 있고 MV-HEVC를 요구하지 않습니다 그다음 패럴랙스 혹은 시차를 분석해서 타일링 표현을 위한 패럴랙스 정보를 생성합니다 각 스테레오 프레임마다 정보가 메타데이터 페이로드로 패키징됩니다 이 메타데이터의 포맷 설명은 SDK와 함께 제공됩니다 패럴랙스 정보는 메타데이터 샘플로 패키징되어 시한 메타데이터 트랙에 기록됩니다 메타데이터 트랙은 해당 비디오와 연결되죠 메타데이터와 비디오 트랙은 비디오와 다중화되어야 HLS 패키징이 생성하는 비디오 세그먼트에 비디오와 패럴랙스 메타데이터가 포함됩니다 이미 2D용으로 생성한 캡션은 3D에서 재사용할 수 있습니다 현재 사용 중인 프로세스나 협업 중인 공급업체가 계속해서 2D로 작업해도 3D 프로덕션을 할 수 있다는 뜻입니다 즉 여러분의 3D 콘텐츠에서 별도의 사전 지식 없이도 언어, 가로 및 세로 레이아웃 손쉬운 사용 자막을 사용자 기호에 맞게 사용할 수 있다는 뜻입니다 패럴랙스 메타데이터를 추가하면 플랫폼은 빌드한 패럴랙스 메타데이터에 동적으로 적응합니다 2D 전송에 사용하는 오디오도 3D 비디오에 사용할 수 있습니다 플랫폼이 머리 추적을 지원하므로 공간 음향 포맷을 사용해 보세요 2D와 3D 경험에서 같은 오디오를 공유하기 위해 비디오는 타이밍이 일치해야 합니다 같은 편집이어야 하죠 만약 차이가 있다면 2D와 3D 에셋의 오디오 트랙을 분리해야 합니다 3D 패키징에 대해서는 업데이트된 HLS 도구가 세부 사항을 처리할 수 있고 3D 에셋을 만드는 과정은 2D와 거의 동일합니다 Apple의 도구를 사용하지 않는 대부분의 프로덕션 시스템이 동등한 기능을 구현하려면 새로 출시되는 사양을 사용하면 됩니다 만약 재생 목록을 직접 작성하거나 검사한다면 몇 가지 변경 사항에 주의하세요 REQ-VIDEO-LAYOUT은 비디오 스트림의 새로운 태그로 비디오의 스테레오스코픽 여부를 알려줍니다 비디오가 스테레오인지 아닌지 속성값이 나타나죠 에셋이 3D로 로딩되면 2D로 전환되지 않고 그 반대도 마찬가지입니다 2D 비디오는 변환하지 않고 같은 재생 목록에서 3D 비디오와 혼합해서 사용할 수 있습니다 REQ-VIDEO-LAYOUT은 HLS 사양의 새로운 버전을 요구하므로 버전은 12로 업데이트됩니다 SDK에 문서화되어 있는 내용입니다 다음은 다중 변형 재생 목록의 예시로 버전을 12로 변경하고 3D 비디오 스트림에 REQ-VIDEO-LAYOUT을 사용한 겁니다 탐색 경험을 가장 좋게 하려면 다중 변형 재생 목록에 2D iFrame 스트림을 포함해서 섬네일 스크러빙을 지원하세요 마지막으로, HLS 전송은 3D 에셋과도 동일하게 작동합니다 3D 에셋 전송은 2D 에셋 전송과 매우 유사하지만 경험을 최적화하기 위해 할 일이 몇 가지 있습니다 3D 비디오를 위해 MV-HEVC를 사용하는 원본 에셋을 준비하세요 새로운 패럴랙스 컨투어 메타데이터를 포함해서요 오디오와 캡션 제작은 동일합니다 업데이트된 패키징을 사용하여 관련 세그먼트와 재생 목록을 생성하세요 호스팅은 이전과 동일합니다 마무리하기 전에 콘텐츠 디자인의 목표는 3D 경험에서의 시각적 편안함이라는 걸 강조하고 싶습니다 3D 콘텐츠는 장시간 관람하기에 편안해야 하죠 일부 3D 콘텐츠는 특성상 편안하지 않을 수 있는데 극단적으로 네거티브, 포지티브이거나 콘텐츠가 고속으로 움직여서 초점을 맞추기 어려운 경우 '윈도우 위반'으로 인한 깊이 충돌 같은 경우가 있습니다 화면 크기도 시청에 불편함을 야기할 수 있죠 시청자의 수평 시야에 화면이 얼마나 들어가는지에 따라 다릅니다 화면은 사용자가 멀리 혹은 가까이 위치시켜 크기를 조정할 수 있습니다 지금까지 HTTP Live Streaming을 사용한 2D 및 3D 전송에 대해 알아봤습니다 비디오에 대해서는 MV-HEVC를 소개했고 오디오에 대해서는 같은 오디오 스트림을 2D와 3D에서 사용할 수 있다고 언급했죠 마찬가지로 캡션도 같은 스트림을 2D와 3D에서 사용할 수 있습니다 마지막으로 3D 비디오의 패럴랙스를 설명하려고 새로운 시한 메타데이터 포맷을 소개했습니다 이 덕분에 같은 캡션을 사용할 수 있죠 마무리하면 기존의 2D 콘텐츠를 공간 경험으로 전환하는 과정을 최대한 쉽게 만들었습니다 현재의 2D 파이프라인을 약간 수정하면 MV-HEVC를 이용하여 3D 콘텐츠를 지원할 수 있습니다 심지어는 기존 2D 캡션도 사용할 수 있죠 하지만 시한 메타데이터를 제공하면 캡션을 뚜렷하게 볼 수 있고 편하게 시청할 수 있습니다 비디오 재생 구현에 대해서는 관련 세션을 참고해 주세요 여러분이 제공할 멋진 콘텐츠를 기대하고 있습니다 함께해 주셔서 감사합니다 ♪
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.