라이브 스트리밍이란? | 라이브 스트리밍이 작동하는 방식

라이브 스트리밍은 데이터가 생성되는 동안 인터넷을 통해 비디오 또는 오디오 데이터를 시청자에게 전달하는 것입니다.

학습 목표

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

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

관련 콘텐츠


계속 알아보시겠어요?

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

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

글 링크 복사

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

스트리밍은 인터넷에서 동영상을 시청할 때 사용되는 데이터 전송 방식입니다.스트리밍은 원격 저장 위치에서 비디오 파일을 한 번에 조금씩 전송하는 방법입니다.인터넷을 통해 한 번에 몇 초씩 파일을 전송하면 클라이언트 장치에서는 동영상 재생을 시작하기 전에 전체 동영상을 다운로드할 필요가 없습니다.

라이브 스트리밍은 스트리밍된 동영상을 녹화 및 저장하지 않고 인터넷을 통해 실시간으로 전송하는 것을 말합니다. 오늘날에는 TV 방송, 비디오 게임 스트림, 소셜 미디어 동영상을 모두 라이브로 스트리밍할 수 있습니다.

일반 스트리밍과 라이브 스트리밍의 차이는 배우가 외운 독백을 낭독하는 것과 즉흥적으로 연설을 하는 것의 차이로 생각하면 됩니다. 전자의 경우 콘텐츠가 미리 생성되어 저장된 후 청중에게 전달됩니다. 후자의 경우, 시청자는 라이브 스트리밍에서와 마찬가지로 배우가 콘텐츠를 제작하는 순간에 콘텐츠를 수신하게 됩니다.

라이브 스트리밍이라는 용어는 일반적으로 여러 사용자에게 한 번에 전송되는 일대다 연결인 생방송 라이브 스트리밍을 의미합니다. Skype, FaceTime, Google Hangouts Meet 등의 화상 회의 기술은 일대다 실시간 스트리밍 방송에 사용되는 프로토콜이 아닌 실시간 통신(RTC) 프로토콜에서 작동합니다.

라이브 스트리밍은 기술적 수준에서 어떻게 작동할까요?

다음은 라이브 스트리밍 막후에서 일어나는 주요 단계입니다.

동영상 캡처

라이브 스트리밍은 카메라가 캡처한 시각적 정보인 원시 비디오 데이터로 시작됩니다. 카메라가 연결된 컴퓨팅 장치 내에서 이 시각 정보는 디지털 데이터, 즉 가장 깊은 수준에서 1과 0으로 표현됩니다.

압축 및 인코딩

다음으로 세분화된 동영상 데이터가 압축되고 인코딩됩니다. 데이터는 중복된 시각적 정보를 제거하여 압축됩니다. 예를 들어 동영상의 첫 프레임에 회색 배경 앞에서 말하는 사람이 표시되는 경우, 배경이 동일한 후속 프레임에서는 회색 배경을 렌더링할 필요가 없습니다.

동영상 압축은 거실에 새 가구를 추가하는 것과 같다고 생각하면 됩니다. 새 의자나 사이드 테이블을 추가할 때마다 신품 가구를 구매할 필요는 없습니다. 대신 방의 레이아웃을 거의 동일하게 유지하면서 한 번에 한 부분씩만 바꾸고 필요에 따라 가끔 더 큰 규모로 다시 배열할 수 있습니다. 마찬가지로 동영상 스트림의 모든 프레임을 모두 렌더링할 필요는 없으며, 사람의 입 움직임과 같이 프레임마다 바뀌는 부분만 렌더링하면 됩니다.

"인코딩")은 데이터를 새로운 형식으로 변환하는 과정을 말합니다. 라이브 스트리밍 동영상 데이터는 다양한 기기에서 인식할 수 있는 해석 가능한 디지털 포맷으로 인코딩됩니다. 일반적인 동영상 인코딩 표준은 다음과 같습니다.

분할

동영상에는 많은 디지털 정보가 포함되어 있으므로 짧은 PDF나 이미지를 다운로드하는 것보다 동영상 파일을 다운로드하는 데 시간이 더 오래 걸립니다. 인터넷을 통해 모든 동영상 데이터를 한 번에 전송하는 것은 현실적으로 불가능하므로 스트리밍 동영상은 몇 초 길이의 작은 세그먼트로 나누어 전송됩니다.

CDN 배포 및 캐싱

라이브 스트림이 세분화, 압축, 인코딩(모두 몇 초밖에 걸리지 않음)이 완료되면 이를 시청하려는 수십 명이나 수백만 명의 시청자에게 제공해야 합니다. 서로 다른 위치에 있는 여러 시청자에게 스트리밍을 제공하면서 대기 시간을 최소화하고 고품질을 유지하려면 CDN을 통해 스트리밍을 분산시켜야 합니다.

CDN은 원본 서버를 대신하여 콘텐츠를 캐시하고 제공하는 서버의 분산 네트워크입니다. CDN을 사용하면 사용자 요청이 더 이상 원본 서버까지 이동할 필요 없이 가까운 CDN 서버에서 처리할 수 있으므로 성능이 빨라집니다. 이러한 방식으로 요청을 처리하고 콘텐츠를 전송하면 원본 서버의 작업 부하도 줄어듭니다. 마지막으로 CDN은 서버가 한 지역에 집중되어 있지 않고 전 세계에 분산되어 있으므로 전 세계 사용자에게 콘텐츠를 효율적으로 제공할 수 있습니다.

또한 CDN은 라이브 스트림의 각 세그먼트를 캐시(임시 저장)하므로 대부분의 시청자는 원본 서버가 아닌 CDN 캐시에서 라이브 스트림을 받게 됩니다. 이렇게 하면 캐시된 데이터가 몇 초 뒤처지더라도 원본 서버와의 왕복 시간(RTT)이 단축되므로 라이브 스트리밍이 실시간에 더 가까워집니다.

디코딩 및 동영상 재생

CDN은 스트리밍을 시청하는 모든 사용자에게 라이브 스트림을 전송합니다. 각 사용자의 장치에서는 세분화된 동영상 데이터를 수신, 디코딩, 압축 해제합니다. 마지막으로, 사용자 장치의 미디어 플레이어(전용 앱 또는 브라우저 내 동영상 플레이어)에서 데이터가 시각적 정보로 해석되고 동영상이 재생됩니다.

Alice가 스마트폰으로 라이브 스트리밍을 시작하고 지구 반대편에 사는 Bob이 Alice의 친구 수십 명과 함께 자신의 스마트폰으로 라이브 스트리밍을 시청한다고 가정해 보겠습니다. Alice는 스마트폰 카메라를 직접 켜고 " "안녕하세요, 전 세계 여러분!" "이라고 말하며 라이브 스트리밍을 시작합니다. 동영상의 "안녕하세요, 전 세계 여러분" 섹션이 지구 반대편에 있는 Bob과 방송을 시청하는 다른 모든 사람에게 전달되려면 어떻게 해야 할까요?

먼저 Alice의 스마트폰이 해당 작은 비디오 세그먼트를 인코딩하고 압축합니다. Alice가 주방에서 라이브 스트림을 촬영하는 경우, 주방 벽이 영상의 첫 번째 프레임으로 녹화되고 이후 프레임에서는 배경이 변경되지 않으므로 주방 벽이 생략됩니다.

이제 Alice가 사용 중인 앱은 인코딩된 압축 버전의 "안녕하세요, 전 세계 여러분"을 앱의 CDN으로 전송합니다. 다행히도 Bob에게는 CDN 서버 중 하나가 집에서 불과 몇 마일 떨어진 곳에 있으므로 라이브 스트림의 첫 번째 세그먼트에 대한 스마트폰의 요청이 거의 즉시 응답됩니다. 다른 라이브 스트림 시청자는 지리적 위치에 따라 Bob보다 대기 시간이 더 길거나 짧을 수 있습니다.

Bob의 휴대폰에서는 비디오 세그먼트를 디코딩하고 압축된 데이터를 재구성하여 Alice의 주방 벽이 모든 프레임에 나타나게 됩니다. 마침내 Alice가 지구 반대편에 있는 주방에서 "안녕하세요, 전 세계 여러분"이라고 말한 지 몇 초 만에 Bob의 스마트폰에 Alice의 얼굴이 나타나고 Bob은 Alice가 인사하는 것을 시청하게 됩니다.

라이브 스트리밍에 CDN이 중요한 이유는?

대역폭: 네트워크의 특정 지점을 한 번에 통과할 수 있는 데이터의 양은 제한되어 있으며, 이 측정 값을 "대역폭"이라고 합니다.데이터 스트림이 네트워크에서 용량을 초과하는 지점에 도달하면 데이터 전송이 차단되어 속도가 느려지므로 이를 "병목 지점"이라고 합니다.병목 지점은 너무 많은 차량이 1차선 도로를 이용하려고 할 때 교통 체증이 발생하는 것과 유사합니다.

스트림의 모든 시청자가 원본 지점에서 스트림 데이터를 가져오는 경우 원본 서버와 주변 네트워크 인프라가 병목 지점이 되어 스트리밍 속도가 느려집니다. 그러나 스트림 전송의 주요 부담이 CDN으로 이전되면 병목 제거지점이 됩니다.

글로벌 콘텐츠 전송: CDN은 전 세계에 분산되어 있으므로 전 세계 사용자에게 콘텐츠를 전송할 수 있습니다.뉴욕에 있는 원본 서버에서는 밀라노에 있는 시청자에게 콘텐츠를 효과적으로 제공할 수 없으며, 특히 동영상과 같은 무거운 콘텐츠의 경우 더욱 그러합니다.하지만 CDN은 네트워크의 어느 지점에서든 콘텐츠를 전달하고 제공할 수 있으므로 밀라노에 있는 사람이 뉴욕에서 라이브 스트리밍을 시청하는 경우 뉴욕에서 로딩될 때까지 기다리지 않고 밀라노의 서버에서 스트리밍을 받을 수 있습니다.

대기 시간 및 RTT 감소: CDN을 통해 전 세계에 콘텐츠를 전송하면 왕복 시간(RTT)이 줄어 라이브 스트리밍 시청자의 대기 시간이 단축될 수 있습니다. 시청자의 실시간 생방송 요청이 더 이상 스트림의 원래 소스까지 이동할 필요가 없고 스트리밍 데이터도 원래 소스에서 이동할 필요가 없으므로 요청-응답 왕복 시간이 거리와 시간 측면에서 모두 짧아집니다. 따라서 지연이 줄어들고 라이브 스트림이 "라이브"에 더 가깝게 유지됩니다.

워크로드: 사용자의 데이터 요청에 응답하려면 서버에 일정한 컴퓨팅 성능이 필요합니다.동영상 데이터에 대한 많은 사용자의 요청에 응답하다 보면 단일 서버에 과부하가 걸릴 수 있습니다.CDN은 수십 대나 수백 대의 서버를 활용하여 원본 서버의 워크로드를 상당 부분 해소하고 계속 운영할 수 있습니다.

캐싱: CDN은 라이브 스트림의 각 비디오 세그먼트를 캐싱합니다.그런 다음 CDN은 원본 서버에서 데이터를 가져오는 대신 캐시에서 세그먼트를 전송할 수 있습니다.

캐시에서 라이브 스트림을 제공하는 것은 모순처럼 보입니다. 스트림이 라이브인데 어떻게 저장했다가 몇 초 후에 전송하는 것이 더 빠를 수 있을까요? 캐시된 라이브 스트림이 실시간보다 지연되는 것은 사실이지만, 원본 서버까지 이동하는 것보다는 여전히 빠릅니다. 왕복 시간이 너무 오래 걸려서 스트림이 더 뒤처질 수 있습니다. CDN 캐싱을 통해 사용자는 대기 시간을 최소화할 수 있습니다.

Cloudflare에서는 라이브 스트리밍을 어떻게 가속화할까요?

Cloudflare CDN은 동시 스트리밍 가속화라는 기술을 사용하여 라이브 스트림 전송 속도를 높입니다.일부 CDN은 세그먼트가 캐시에 완전히 저장될 때까지 두 명 이상의 사용자에게 비디오 세그먼트를 제공할 수 없습니다.그러나 Cloudflare CDN은 이러한 세그먼트가 로딩되는 동안 여러 시청자에게 한 번에 직접 제공할 수 있으므로 사용자의 소중한 대기 시간을 몇 초 단축할 수 있습니다.동시 스트리밍 가속화에 대해 자세히 알아보기.