라이브 스트리밍 인코딩의 작동 방식은? | 비디오 인코딩

라이브 스트리밍 인코딩은 라이브 비디오를 작은 단위로 나누고, 압축하고, CDN을 통해 비디오 데이터로 배포합니다. 이 프로세스가 업데이트되어 라이브 스트리밍 속도가 더 빨라지고 있습니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 비디오 파일을 인코딩하는 이유를 알아보세요.
  • 라이브 스트리밍 인코딩 원리를 알아보세요.
  • 라이브 스트리밍 인코딩 프로세스를 개선하면 어떻게 대기 시간을 줄일 수 있는지 알아보세요.

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

라이브 스트리밍이란 무엇입니까?

스트리밍은 인터넷을 통해 데이터를 전송하는 방법으로서, 최종 사용자가 데이터를 완전히 다운로드하지 않아도 됩니다. 라이브 스트리밍은 스트리밍의 한 종류로서, 스트리밍을 기록하거나 저장하지 않고, 인터넷을 통해 실시간으로 전송합니다.

비디오 게임 스트리밍, Periscope와 Facebook Live 등의 소셜 미디어 스트리밍, 인터넷을 통한 프로 스포츠 방송은 모두 라이브 스트리밍의 예입니다. 오디오와 비디오를 모두 라이브 스트리밍할 수 있지만, 이 글에서는 라이브 비디오 스트리밍을 중점적으로 다루겠습니다.

비디오 인코딩이란 무엇입니까?

비디오 인코딩이란 비디오 데이터를 압축하여 다른 위치로 효율적으로 전송할 수 있게 하는 프로세스입니다. 예를 들어 사용자가 좋아하는 TV 프로그램을 시청 중인 태블릿 같은 스트리밍 수신측의 장치는 인코딩된 데이터를 디코딩합니다. 비디오 인코딩은 공개적으로 알려진 표준을 따르기 때문에 다양한 장치가 인코딩된 스트리밍을 해석할 수 있습니다.

비디오 인코딩은 두 가지 이유 때문에 필요합니다.

  1. 비압축 비디오 파일은 인터넷으로 전송하는 데 너무 오래 걸리기 때문에 스트리밍이 불가능합니다.
  2. 비디오는 스마트폰, 노트북, PC 등의 모든 사용자 장치가 해석할 수 있는 포맷으로 제작돼야 합니다.

비디오 라이브 스트리밍에서 장치는 시청각 입력을 수신하고, 인코딩하고, 동시에 시청자에게 보냅니다. 이 과정에서 인코딩은 매우 중요합니다. 다양한 사용자 장치가 비디오를 수신하고 재생할 수 있어야 하기 때문입니다.

라이브 스트리밍 인코딩은 어떻게 작동합니까?

웹캠 같이 비디오를 캡처하는 소스의 라이브 스트리밍이 서버로 전송되면 HLS나 MPEG-DASH 같은 스트리밍 프로토콜이 비디오 피드를 몇 초 길이의 작은 세그먼트로 분할합니다.

이후, 비디오 콘텐츠는 인코딩 표준을 이용하여 인코딩됩니다. 현재 널리 사용 중인 인코딩 표준은 H.264라고 불리지만, VP9, AV1, HEVC 등의 표준도 많이 사용됩니다. 이러한 인코딩 프로세스에서는 중복 비디오 정보가 제거되어 비디오가 압축됩니다. 예를 들어, 어떤 사람이 파란 하늘을 배경으로 이야기하는 스트리밍에서 파란 하늘은 많이 변하지 않으므로 매초의 비디오마다 렌더링하지 않아도 됩니다. 따라서 파란 하늘은 대부분의 비디오 프레임에서 제거할 수 있습니다.

이제 압축 및 분할된 비디오 데이터는 CDN(콘텐츠 전송 네트워크)을 이용하여 배포됩니다. CDN이 없으면 극소수의 시청자만 라이브 스트리밍을 로드할 수 있습니다. 이유는 마지막에 설명하겠습니다.

대부분의 모바일 장치에는 인코더가 내장되어 있어, 일반 사용자가 간편하게 소셜 미디어 플랫폼과 메시징 앱을 통해 라이브 스트리밍할 수 있습니다. 고품질 스트리밍을 원하는 브랜드와 기업은 자체 인코딩 소프트웨어나 하드웨어를 사용하거나 둘 다 사용합니다.

최신 기술은 어떻게 라이브 스트리밍 속도를 높이고 있습니까?

라이브 스트리밍이 많아지면서 시청자는 여전히 20~30초의 대기 시간을 경험합니다. 다시 말해 시청자가 보는 콘텐츠는 실제보다 20~30초 늦은 것입니다. 이것은 부분적으로 비디오의 각 세그먼트가 완전히 로드돼야 재생할 수 있고 각 세그먼트를 로드하는 데 수 초가 걸리기 때문에 발생합니다.

이 지연 문제를 해결하는 방법에 청크 분할 인코딩이라고 하는 것이 있습니다. 이 프로세스는 "청크”합니다. 즉 비디오 세그먼트를 더 작은 조각으로 분할합니다. 이후 작은 세그먼트를 인코딩하면 스트리밍을 수신하는 장치가 모든 세그먼트가 로드되기 전에 작은 청크를 재생할 수 있습니다.

CDN은 라이브 스트리밍의 속도를 높이는 데 어떻게 도움을 줍니까?

CDN는 라이브 스트리밍에 매우 중요합니다. 이를 통해 다양한 위치의 사용자에게 스트리밍을 배포할 수 있기 때문입니다. 또한 CDN은 단일 원본 서버보다 스트리밍 배포 대역폭이 훨씬 큽니다. CDN이 없으면 라이브 스트리밍에 대역폭 문제가 쉽게 발생할 수 있습니다.

하지만, 대부분의 CDN은 여전히 비디오 세그먼트를 모두 로드해야 여러 사용자에게 동시에 세그먼트를 제공할 수 있습니다. 이로 인해 청크 분할 인코딩이 해결해야 하는 대기 시간 문제가 다시 일어납니다.

Cloudflare에서는 라이브 스트리밍 속도를 높이려고 동시 스트리밍 가속화라는 기능을 제공합니다. Cloudflare CDN은 비디오 세그먼트가 로드되는 중에 복수의 최종 사용자에게 비디오 세그먼트를 동시에 전송하여 전체 세그먼트가 로드되는 대기 시간을 제거합니다. 120개국 330개 도시에 있는 Cloudflare 전역 네트워크로 전 세계 사용자는 고품질 실시간 라이브 스트리밍을 즐길 수 있습니다.