스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
SharePlay에 광고 및 삽입 광고 표시
앱이 각 참가자에게 서로 다른 광고 일정을 제공할 때 SharePlay에서 조정된 재생 경험을 제공하는 방법을 알아보세요. 서버측 삽입 광고(stitched-in ad)와 예약된 HLS 삽입 광고를 통해 재생 경험을 구축하는 방법을 살펴보고 팁과 모범 사례를 공유합니다.
리소스
관련 비디오
WWDC22
-
다운로드
♪ ♪ 안녕하세요, 여러분 저는 Prashant입니다 AVFoundation Engineer이며 WWDC2022에 오신 것을 환영합니다 SharePlay의 탄생으로 사람들은 완전한 동기화 상태에서 실시간으로 콘텐츠와 상호작용하고 탐색하는 연결된 시청 경험을 누리게 되었습니다 하지만 누군가는 콘텐츠 타임라인에 삽입된 틈새 광고나 타깃 광고 때문에 다른 길이의 광고를 보는 다른 참가자나 광고가 없는 참가자와 광고가 있는 참가자가 섞여 있는 경우 그들 간의 플레이백을 조정하는 것이 힘들 수 있습니다 SharePlay에서 조정된 플레이백 을 위한 광고나 기타 틈새 광고를 넣고 싶다면 이 세션을 제대로 선택하신 거예요 여기서는 어떻게 플레이백을 조정하는지를 다룰 겁니다 그 다음 조정된 플레이백에서 광고 및 틈새 광고와 관련된 어려움을 살펴보고 광고를 시청하면서 가질 수 있는 다양한 시청 경험에 대한 내용을 다룰게요 그런 다음 이걸 광고 연결에 어떻게 적용하는지 살펴보고 HLS 틈새 광고가 조정된 플레이백과 어떻게 작동하는지도 살펴볼게요 끝으로 사람들에게 멋진 SharePlay 경험을 제공하는 데 참고할 몇 가지 모범 사례도 살펴보겠습니다
SharePlay에서 조정된 플레이백이 어떻게 실행되는지 볼까요 참가자들이 FaceTime 통화 중일 때 플레이백 제어 명령은 한 참가자의 기기에서 시작하여 그룹 내 공유되며 모두 동기화된 상태로 재생됩니다 모든 참가자가 같은 콘텐츠를 보고 있는 상황에서는 아무 문제가 없지만 광고가 있다면 어떻게 될까요? 자, Alice와 Bob이 어떤 프로그램 콘텐츠를 보고 있다고 가정해 볼게요 여기 둘의 프레젠테이션 타임라인 가장 마지막을 볼 수 있습니다 시청하고 있는 프로그램 콘텐츠가 하나라면 조정된 플레이백이 꽤 쉬울 거예요 playbackCoordinator와 groupSession이 있다면 바로 가능합니다 만약 스튜디오나 네트워크 배너의 뒷부분에 각각 프로그램 요약 세그먼트가 삽입되어 있다고 볼게요 굉장히 일반적인 경우이고 Alice와 Bob 모두 요약 세그먼트와 배너가 같기 때문에 여전히 조정된 플레이백이 가능합니다 하지만 Alice의 지리적 위치 때문에 프로그램 시작 전 서비스에 법정 경고가 표시된다고 가정해 볼게요 그럼 프로그램 내 다른 부분에 광고가 삽입되겠죠 그러면 이 광고는 길이가 달라집니다 이렇게 되면 동기화 상태에서 재생할 때 이게 어떤 문제를 일으킬지 알 수 있습니다 Bob은 네트워크 배너를 초반에서 보게 되겠지만 Alice는 경고가 표시된 다음에 보게 되겠죠 프레젠테이션 타임라인에서 임의의 한 시점을 살펴보면 이 둘은 콘텐츠의 전혀 다른 부분을 시청하고 있는 겁니다 이제 이런 시나리오에서 가능한 사용자 경험이 어떤 게 있을지 한번 살펴볼게요 우선 각각에 광고 하나만 삽입된 간단한 타임라인을 살펴보겠습니다 이런 경우라면 프로그램을 혼자 보고 있는 경우와 크게 다르진 않을 겁니다 그렇게 하려면 광고 길이가 매칭되어야겠죠 이건 우리가 원하는 사용자 경험이기도 합니다 광고 시청이 끝난 다음 두 명 모두 동기화된 플레이백을 재개합니다 하지만 간혹 다른 길이의 광고를 보게 되거나 한 명은 광고가 아예 없을 수도 있어요 재생이 동기화되었다면 다음 둘 중 하나의 경우에 해당하겠죠
Alice의 광고 시청이 끝나면 동기화 재개될 때까지 Bob의 광고가 끝나기를 기다리는 거죠
아니면 Alice는 메인 프로그램을 계속 시청하고 Bob은 동기화를 위해 내용을 건너뛰어야 합니다 이 경우 Bob은 Alice를 따라잡느라 프로그램 콘텐츠의 일부를 보지 못하겠죠 이런 경우는 어떻게 할 수 있을까요? AVPlaybackCoordinator의 대기 정책은 어떻게 suspensionReasons ThatTriggerWaiting 배열을 하냐에 따라 특정할 수 있어요 그리고 일부 참가자가 광고를 시청하는 동안 그룹이 기다리지 않는 것이 기본입니다 참가자가 광고 시청을 끝내고 나면 그룹의 다른 사람들을 따라잡기 위해 콘텐츠 일부를 놓치게 됩니다 만약 참가자가 광고를 시청하는 동안 그룹이 기다리게 하려면 'playingInterstitial' 보류 이유를 suspensionReasonsThatTrigger Waiting 배열에 추가하면 됩니다 이 정책 때문에 참가자가 다른 참가자의 광고가 끝나기를 기다리는 동안 플레이어의 timeControlStatus는 waitingToPlayAtSpecifiedRate가 되고 waitingReason은 waitingForCoordinatedPlayback이 됩니다 앞서 설명한 내용으로 돌아가서 어떻게 하면 조정된 플레이백 타임라인에서 이 시간 범위를 제외하게 설정할 수 있을까요? 예를 들어 법정 경고는 Alice에겐 보이지만 Bob에겐 안 보이죠 그리고 광고의 길이가 다를 수도 있어요 HLS은 두 가지의 광고 스케줄링이 가능하다는 걸 잊지 마세요 그 중 하나는 광고 세그먼트를 주요 콘텐츠의 재생목록에 직접 끼워 넣는 겁니다 주문형 비디오 콘텐츠라면 비연속적 태그를 사용해 광고가 삽입된 AVPlayer Playback Coordinator에서 AVFoundation API를 사용하여 광고 시간 범위를 설정 가능합니다 그래서 콘텐츠 광고나 틈새 광고를 나타내는 정확한 샘플 시간 범위의 배열을 특정할 수 있는 대표 메소드를 추가했습니다 AVPlayerPlaybackCoordinator는 이 정보를 사용하여 그룹 내에서 플레이백을 조정합니다 참가자가 이 시간 범위에 들어가면 플레이백은 정해진 대기 정책에 따라 조정됩니다 더불어 틈새 광고의 타입에 따라 다른 사람이 이 시간 범위를 탐색하게 할 수도 있어요 SharePlay를 사용하는 동안 이 시간 범위를 사용한다면 그룹 전체가 그 시간 범위의 시작 지점에 맞춰질 거예요
이건 재생 목록의 EXTINF 태그에 보고된 시간을 더해 광고 시간 범위를 채우는 재생 목록의 예시라 할 수 있습니다 이것은 EXTINF 태그의 일부로 보고된 시간이 그 세그먼트의 미디어 길이를 정확하게 반영한다는 것을 의미합니다 그렇다면 조정된 플레이백이 작동하려면 에셋은 어떻게 되어야 할까요? 이 예시를 보면 Alice와 Bob은 삽입된 광고의 길이가 다릅니다 이는 에셋 길이가 달라지는 결과를 낳지요 SharePlay와 호환된다는 점을 고려하면 에셋의 실제 콘텐츠 길이가 일치해야 합니다 이건 광고가 삽입된 라이브 콘텐츠를 위한 주문형 비디오 콘텐츠에만 적용되고 모든 참가자의 광고 길이가 동일할 것으로 예상합니다 정확한 샘플 시간 범위를 얻기 힘들거나 라이브 콘텐츠에 타깃 광고를 동적으로 삽입하려면 HLS 틈새 광고를 사용해 광고를 스케줄링 하세요 지난 2021년 HLS 틈새 광고가 도입되어 다양하고 더 유연한 광고 스케줄링이 가능해졌습니다 자세한 내용은 WWDC2021의 HLS 토크의 '동적 프리롤 및 미드롤 알아보기'를 참고하세요 요약하자면 광고와 틈새 광고는 콘텐츠 타임라인 외 별도의 개체입니다 이러한 개체의 직접 참조는 multi variant playlist를 통해 가능하고 이는 주요 콘텐츠의 미디어 재생 목록의 데이터 범위 태그로 multi variant playlist URI를 포함함으로써 Server Side Ad Insertion을 사용할 수 있어요 아니면 AVFoundation API를 사용하여 클라이언트 측에 광고를 스케줄링할 수도 있습니다 AVFoundation은 조정된 플레이백을 자동으로 처리하기 때문에 대기 정책만 특정화하면 됩니다
광고를 스케줄링할 때 HLS 틈새 광고를 사용하면 에셋이 SharePlay와 호환되게 하기 위해 모든 참가자의 주요 콘텐츠 길이가 같아야 합니다 이제 정말 좋은 SharePlay 경험을 제공하기 위해 사용할 수 있는 몇몇 모범 사례를 살펴볼게요 SharePlay는 사람들이 콘텐츠를 보면서 상호 작용하며 자연스럽게 연결된 시청 경험을 제공합니다 이런 경험을 고려하여 대기나 콘텐츠 건너뛰기를 가능한 최소화해야 하죠 그래서 대기나 건너뛰기가 최소화되도록 광고 시간을 정렬해야 합니다 일부는 광고가 있고 일부는 광고가 없는 상황에서 모든 참가자가 라이브 콘텐츠를 시청하고 있다면 기본 대기 정책을 사용하는 동안 HLS 틈새 광고를 통해 광고를 스케줄링할 수 있습니다 광고를 스케줄링하는 동안 재개 오프셋을 특정하지 않으면 콘텐츠는 광고 길이와 동일한 오프셋에서 재개됩니다 이런 경우 광고가 없는 참가자는 주요 콘텐츠를 계속 볼 수 있고 다른 이들은 광고가 끝난 후 콘텐츠를 볼 수 있죠
Alice와 Bob 그리고 Charlie가 라이브 콘텐츠를 시청 중입니다 Alice는 프리미엄 구독자라 광고가 안보이지만 Bob과 Charlie는 HLS를 통해 스케줄링 된 다른 길이의 광고가 보입니다 Alice는 프로그램을 계속 시청할 수 있지만 Bob와 Charlie는 광고가 끝나야 Alice와 동기화가 됩니다
만약 이게 라이브 스포츠 게임이라면 Alice는 현장의 생동감을 실시간으로 느낄 수 있지만 Bob과 Charlie는 광고를 보고 있겠죠 광고가 끝나고 나면 경기 시작 바로 전일 거에요 주문형 비디오 스트리밍에서 프로그램의 단 한 장면도 놓치지 않고 보려면 'Wait' 대기 정책을 사용해야 합니다 GroupSessionMessenger를 사용하면 참가자들이 서로 광고 스케줄을 공유할 수 있습니다 이미 스케줄을 공유했기 때문에 누가 얼마나 다른 사람의 광고 시청이 끝나기를 기다려야 하는지 알 수 있죠 이제 기다리는 동안 계속해서 서비스를 이용하게끔 흥미를 돋우기 위한 다른 서비스 내용을 보여주거나 다른 재밌는 콘텐츠를 보기 위해 다른 플레이어를 쓸 수도 있겠죠 마지막으로 조정된 플레이백에서 광고나 다른 틈새 광고를 스케줄링하려면 대기 정책을 특정화해야 합니다 광고가 삽입되어 있다면 AVFoundation API를 사용해 플레이백 코디네이터에서 시간 범위를 설정하거나 AVFoundation을 통해 광고의 플레이백을 관리하는 HLS 틈새 광고를 사용할 수도 있어요 모든 참가자가 동일한 콘텐츠를 시청하는 게 가장 이상적이겠지만 항상 이렇게 되진 않겠죠 광고가 없는 프리미엄 구독자가 있거나 다른 길이의 광고를 보는 참가자도 있겠죠 이런 경우에 프리미엄 구독자는 대기 화면을 보고 있을 필요가 없습니다 앞서 봤던 재밌는 콘텐츠를 보여주거나 그들을 재밌게 해 줄 다른 경험을 제공해야 합니다 SharePlay에서의 더 많은 사용자 정의 경험을 만들려면 '환상적인 SharePlay 경험 만들기' 토크를 참고하세요 이 세션이 도움이 되셨길 바랍니다 다른 WWDC 세션도 확인해 보세요 감사합니다
-
-
5:13 - Specific sample accurate time ranges that represent ads or interstitials
class MyAVPlayerCoordinatorDelegate : NSObject, AVPlayerPlaybackCoordinatorDelegate { func playbackCoordinator(_ coordinator: AVPlayerPlaybackCoordinator, interstitialTimeRangesFor playerItem: AVPlayerItem) -> [NSValue] { return interstitialTimeRanges } }
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.