Site icon 지락문화예술공작단

클라우드 기반 미디어 생방송 품질 최적화 및 개선 방법 – 2) 인코딩, 패키징 및 전송 최적화

클라우드 기반 미디어 생방송 품질 최적화 및 개선 방법 – 2) 인코딩, 패키징 및 전송 최적화

이 블로그 시리즈의 1부에서는 OTT 스트리밍에서 지연 시간이 문제가 되는 이유와 전체 지연 시간에서 서로 다른 워크플로 단계가 차지하는 비율을 측정하는 방법에 대해 살펴봤습니다. 이 글에서는 인코딩, 패키징 및 CDN 전송 단계를 시작으로 가능한 최적화에 대한 과정을 시작해 보겠습니다. 언급된 파라미터를 조작하면 뷰어를 위해 최적화된 짧은 지연 시간의 라이브 스트림을 준비할 수 있습니다.

인코딩 최적화

앞서 AWS Elemental Live에서 [Low Latency Mode] 입력 파라미터를 사용하여 캡처 지연 시간을 최적화하는 방법을 간략히 설명했습니다. 이 파라미터를 사용하면 입력 타임스탬프가 연속적이지 않을 경우 삭제되는 오디오 패킷이 증가할 수 있습니다. [Input Buffer Size] 파라미터를 사용하여 입력 단계에서 버퍼링되는 프레임 수를 최소한으로 줄일 수 있지만 이 경우 일부 프레임이 삭제될 위험이 있습니다.

 

[Video Encoding] 섹션의 일부 파라미터는 지연 시간에 영향을 줄 수 있습니다.

AWS Elemental MediaLive에서는 화면에 표시되지 않은 마지막 파라미터를 제외하고 [Stream Settings] > [Frame Rate] 섹션의 [Progressive] 스캔 유형 다음에서 동일한 설정을 사용할 수 있습니다. 인코딩 단계의 측면에서는 단계의 끝 부분에 경량 스트림을 추가하여 네트워크 조건이 열악한 모바일 디바이스에서 세그먼트 길이가 평소보다 짧은 경우에도 스트림에 액세스할 수 있도록 하는 것이 좋습니다.

패키징 최적화

거의 모든 플레이어에서는 세그먼트 기간이 지연 시간에 기계적 영향을 미칩니다. 1초 기간의 세그먼트를 사용하는 경우 5초의 지연 시간에 도달할 수 있습니다. 2초 기간의 세그먼트를 사용하는 경우 거의 불가능하지만 플레이어 설정에 중대한 최적화를 적용하지 않는 한 7~10초의 지연 시간이 발생합니다. 1초 세그먼트에서는 약간의 플레이어 버퍼가 자동으로 생성되므로 드라이 버퍼를 빠르게 극복할 수 있는 특정 메커니즘이 플레이어에 없다면 재생 세션이 견고하더라도 큰 도움이 되지 않습니다.

따라서 요구 사항에 적합한 세그먼트 크기를 선택하는 것이 중요합니다. 7초 미만의 지연 시간에 도달할 필요가 없다면 1초 세그먼트를 사용하지 말고 7~10초의 지연 시간을 생성하는 2초 세그먼트를 대신 사용하십시오. 플레이어를 위해 2초 세그먼트를 사용하는 경우 다음과 같은 이점도 있습니다.

인덱스 기간(DVR 기간의 길이) 또한 지연 시간에 영향을 줍니다. 일부 플레이어는 마지막 3개 세그먼트만 참조하는 재생 목록/매니페스트가 있을 때보다 재생 목록/매니페스트의 DVR 기간이 1시간일 때 더 많은 버퍼링을 수행합니다.

AWS Elemental Live에서는 평소보다 빠르게 네트워크 전송 오류를 수정해야 하므로 HLS/DASH 재시도 간격 게시 값을 낮춰야 합니다. 이 값을 2초 세그먼트에 대해 1초로 설정하고 1초 세그먼트의 경우 0초로 설정하십시오.

컨텐츠 전송 최적화

컨텐츠 전송(CDN) 구성에서 지연 시간을 줄이기 위해 변경할 수 있는 항목은 많지 않습니다. Amazon CloudFront는 체인에 인공 버퍼를 추가하지 않습니다. 다른 CDN을 AWS Elemental 오리진 서비스와 함께 사용하는 경우 CDN 아키텍처에 의해 의도적으로 생성된 CDN 기본 버퍼를 볼 수 있습니다. 이 경우 CDN 전문 서비스에 문의하여 가능하다면 전송 구성에서 이 기본 버퍼를 비활성화하십시오.

HLS 재생 목록 및 DASH 매니페스트의 경우 플레이어에서 gzipped 형식의 압축을 지원한다면 CDN 구성이 이러한 형식의 압축 서비스를 허용하는지 확인해야 합니다. 이 형식을 사용하면 HLS 또는 DASH/SegmentTimeline에 사용되는 DVR 기간이 긴 경우 로드 작업이 쉬워집니다.

짧은 지연 시간 모드의 플레이어는 라이브 엣지 시간과 비교하여 일반적으로 더 많은 수의 요청을 전송하므로 향후에 세그먼트를 요청하여 엣지에서 404가 발생할 수 있습니다. 각 CDN에는 이러한 404의 캐시에 대한 고유한 기본 TTL 값이 있으며 일반적으로 이 값은 짧은 지연 시간의 스트림에 적합하지 않으므로 이 값을 조정해야 합니다. Amazon CloudFront 배포의 경우 [Configuration] 패널의 [Error Pages] 섹션에서 이 값을 1초로 설정할 수 있습니다.

‘Origin’ 수신 헤더는 오리진에서 반환되는 모든 다운스트림 CORS 정책의 주요 트리거이므로 이 헤더를 화이트리스트에 추가하여 CDN이 헤더를 오리진으로 전달할 수 있도록 해야 합니다. 이는 짧은 지연 시간과는 무관하지만 워크플로에 여전히 중요한 사항입니다. Amazon CloudFront의 경우 [Configuration] 패널의 [Behaviors] 섹션에서 이 값을 설정할 수 있습니다.

마지막으로 HLS 재생 목록 또는 DASH 매니페스트 TTL이 CDN 측에 설정된 경우 HLS 분할 간격 또는 DASH 매니페스트 업데이트 간격 이하인지 확인해야 합니다.

3부에서는 비디오 플레이어에 적용할 수 있는 최적화 옵션에 대해 살펴봅니다.

Nicolas Weil는 AWS Elemental의 수석 솔루션스 아키텍트입니다.

이 글은  AWS Media Blog의 Part 2: How to Compete with Broadcast Latency Using Current Adaptive Bitrate Technologies 한국어 번역입니다.

Source: 클라우드 기반 미디어 생방송 품질 최적화 및 개선 방법 – 2) 인코딩, 패키징 및 전송 최적화

Exit mobile version