How does live stream encoding work? | Video encoding

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

학습 목표

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

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

글 링크 복사

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

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

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

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

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

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

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

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

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

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

The video content is then encoded using an encoding standard. The encoding standard in wide use today is called H.264, but standards like H.265, VP9, and AV1 are also in use. This encoding process compresses the video by removing redundant visual information. For example, in a stream of someone talking against the background of a blue sky, the blue sky does not need to be rendered again for every second of video, since it does not change a lot. Therefore, the blue sky can be stripped out from most frames of the video.

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

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

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

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

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

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

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

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

To speed up live streaming, Cloudflare offers a feature called concurrent streaming acceleration. The Cloudflare CDN can deliver a segment of video to multiple end users at once while it is still loading, eliminating the wait time while the entire segment loads. The Cloudflare global network spans 200 cities in more than 100 countries, enabling users around the world to tune into a high-quality, real-time live stream.