nyancoder

WWDC 2021 - Transition media gaplessly with HLS 본문

WWDC/WWDC 2021

WWDC 2021 - Transition media gaplessly with HLS

nyancoder 2021. 8. 5. 01:33

원본 영상: https://developer.apple.com/videos/play/wwdc2021/10142/

 

Playback experiences

  • HLS를 지원하는 AVPlayerItem을 AVQueuePlayer에서 사용하는 이점은 다음과 같습니다.
  • 하나의 항목이 재생이 끝났을 때, 다음 항목의 재생이 자연스럽게 시작되게 할 수 있습니다.
  • 앨범과 라이브 방송 간의 전환을 지원합니다.
  • 선형 프로그래밍을 지원합니다.
  • 연속성을 유지하면서도 동적으로 장면 간의 결합을 제공합니다.

  • 화면의 장면을 프로그램을 통해서 적절한 반복 횟수를 추가하거나 원하는 순서로 구성할 수 있습니다.

  • Apple Music의 새로운 기능은 HLS를 통해 콘텐츠를 제공하고 각 노래 간에 끊김 없는 전환을 구현합니다.

 

Media requirements

  • HLS manifest에서는 끊김 없는 전환을 위해 FairPlay 스트리밍, 오디오 코덱, 채널 수, 비트 수, 샘플 속도를 제공해야 합니다.
  • 대기열에 있는 항목들 간의 끊김 없는 전환을 위해서는 동등한 오디오 미디어를 제공해야 합니다.

  • 또한 미디어를 저작할 때 "공통 미디어 응용 프로그램 형식"을 나타내는 CMAF 지침을 따라야 합니다.
  • MPEG 사양에는 목록을 나머지 프레임의 존재를 알려주는 권장 사항이 있습니다.

  • 위의 예에서 HLS manifest는 한 쌍의 720p과 한 쌍의 1080p의 총 4가지 스트림을 제공합니다.
  • 각 쌍 내에서 고급 오디오 코덱인 HE_AAC로 인코딩 된 스트림과 AAC_LC로 인코딩 된 스트림을 제공합니다.
  • 우선 이 예에서는 HE_AAC와 페어링 된 720p 비디오를 재생한다고 가정합니다.
  • 그러면 재생이 끝 나갈 때에 AVQueuePlayer는 다음 항목에서 더 높은 품질인 1080p가 있더라도 끊김 없는 전환에서는 유사한 인코딩이 더 우선순위가 높기 때문에 유사한 인코딩을 선택합니다.
  • 만약 재생이 진행되는 과정에서 비트 전송률이 충분하다면 자연스럽게 플레이어가 더 높은 품질로 전환하게 됩니다.

  • 만일 위의 예제에서 HE_AAC를 제공하지 않았다고 가정합니다.
  • 그렇다면 AVQueuePlayer는 끊김 없는 전환을 할 수 없기 때문에 자유롭게 재생 조건에 가장 적합한 항목을 선택할 수 있습니다.

  • 코드의 예를 보면 우선 서로 다른 url에서 두 개의 AVPlayerItem을 만듭니다.
  • AVQueuePlayer를 생성한 후 "insert after" 함수를 호출하여 순서대로 넣은 다음 "play"를 호출하면 됩니다.

  • 끊김 없는 전환에서는 일반적인 AVAsset도 이용 가능합니다.
  • AVPlayerItems를 통해 여러 개의 Asset도 이용할 수 있습니다.
  • AVQueuePlayer에 대기열에 추가하기 전에 각각의 AVPlayerItem에 대해 서로 다른 시작 및 종료 지점을 정의할 수 있습니다.
  • 시작점을 정의하기 위해서는 seekToTime함수를 사용하며 종료지점을 정의하기 위해서는 forwardPlaybackEndTime을 사용합니다.

  • 3개의 항목에서 각각 seekToTime과 forwardPlaybackEndTime를 호출하여 시작과 끝 지점을 정의한 예제입니다.

  • 이 세 가지 항목을 AVQueuePlayer에 추가하면 위와 같이 지정된 영역들만 추가되는 것을 볼 수 있습니다.

 

Demo

  • 위의 예제에서 처럼 재생 목록의 순서를 정하여 자연스럽게 3개의 항목을 재생할 수 있습니다.

 

목차: https://nyancoder.tistory.com/2

Comments