프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

정말 빠르면 1~2초 안에 시청자에게 도달하는 라이브 스트리밍 방송들은 어떻게 이뤄지는 걸까?

이를 네트워크 프로토콜을 중심으로 알아보자.

 

 

전체 과정 요약

 

 

 

 

 

1. 카메라 데이터의 인코딩

 

카메라로 촬영한 영상이 해당 플랫폼이 지원하는 코덱으로 변환되어한다.

 

코덱(codec)은 어떠한 데이터 스트림이나 신호에 대해, 인코딩이나 디코딩, 혹은 둘 다를 할 수 있는 하드웨어나 소프트웨어를 일컫는다. 또, 이를 위한 알고리즘을 가리키는 용어로도 쓰인다.
일반적으로 코덱이라고 하면 영상, 음향 등 미디어 정보를 압축하는 기술을 가리킨다.
- 위키피디아-

 

 

코덱을 통해 영상의 데이터 스트림을 디코딩이 가능하게 압축한다.

이때 비손실 코덱의 경우 원본의 정보를 그대로 살려 압축하기 때문에 압축률이 높지 않다.

데이터가 커질수록 네트워크 대역폭 부하와 전송 시간이 길어지기 때문에, 주로 손실 코덱이 사용된다.

 

애니메이션을 예로 들면, 동일한 배경에서 캐릭터의 표정만 변화하는 경우가 있다.

이럴 경우 모든 프레임을 데이터로 담지 않고, 이전 프레임에서 변화된 내용만을 저장하여 압축률을 최대로 올릴 수 있다.

 

 

 

 

2.  CDN 서버로 전송

 

스트리밍의 핵심은 낮은 지연시간이다.

따라서 정해진 하나의 메인 서버로 직접 전송하기보다는 지리적으로 가까운 위치에 분산되어 있는 CDN 서버에 전송하게 된다.

시청자 또한 근처의 CDN 서버를 사용해 빠르게 데이터를 다운로드할 수 있다.

 

이때 사용되는 프로토콜은 일반적으로 인터넷에서 많이 사용되는 HTTP가 아닌 스트리밍 전용 프로토콜을 사용하게 된다.

 

 

RTMP(Real-Time Messaging Protocol)

RTMP는 어도비에서 개발한 프로토콜로 일반적으로 서버로 비디오 스트림을 보낼 때 사용된다.

이때 RTMP에서 사용하는 인코딩 방식을 거치기 때문에 RTMP 인코더를 사용해서 인코딩 후 전송하게 된다.

RTMP 인코더라고 다른 코덱을 사용하는 것이 아니라 일반적인 audio(AAC 등)와 video(H.264 등) 코덱을 사용한다.

 

RTMP는 TCP를 사용하기 때문에 안정적으로 서버와 클라이언트 간의 세션을 유지하면서 데이터 스트림 전송이 가능해진다.

 

하지만 현재는 브라우저에서 어도비 플레이어가 지원 중단 것에서 알 수 있듯이, 더 이상 시청자에게 까지 전달하는 용도로 RTMP가 사용되지 않는다.

서버에서 시청자에게는 모든 브라우저가 지원하는 HTTP 기반의 스트리밍 프로토콜로 전송하게 된다.

 

또한 RTMP를 대체할 수 있도록 성능이 개선된 최신 프로토콜인 SRT와 webRTC도 점차 많이 사용되는 추세이다. 

 

 

 

3.  CDN 서버에서 시청자에게 전송 

 

HLS(HTTP Live Streaming)

HLS는 Apple에서 개발한 HTTP 기반의 스트리밍 프로토콜로, 라이브 콘텐츠를 endpoint 디바이스에서 스트리밍 할 수 있다. HTTP를 사용하는 만큼 다양한 디바이스에서 재생이 가능하며 오픈소스로 제공된다.

 

CDN 서버에서 각 클라이언트에게 데이터를 전송하기 위해서, 다시 한번 인코딩(H.264 또는 H.265)을 거친다.

이후 각 비디오들을 정해진 초 단위의 세그먼트로 나누고 각 파일의 재생 순서와 정보를 기록한 인덱스 파일을 생성한다.

클라이언트의 디바이스들은 해당 데이터들을 수신하여 순서에 맞게 재생을 하게 된다.

 

이때 서버는 클라이언트의 네트워크 환경에 따라 적절한 영상 품질을 제공하기 위해 360p, 720p, 1080p 등 다양한 품질로 세그먼트를 준비하여 제공하게 된다. 

HLS도 TCP를 사용하기 때문에, 네트워크의 정보를 파악할 수 있고 이에 따라 적응형으로 적절한 품질의 스트리밍을 제공하게 된다.

 

빠른 전송에는 UDP가 특화되어 있지만, 라이브 스트리밍은 실시간 화상 회의와 다르게 몇 초 정도의 지연은 허용되기 때문에 TCP를 통해 안정적인 연결을 지양하는 것 같다.

 

 

MPEG-DASH (Dynamic Adaptive Streaming over HTTP)

HLS 이외에도 DASH가 HTTP 기반으로 스트림을 제공한다.

 

HLS는 H.264 또는 H.265 인코딩을 사용해야만 하지만, DASH는 다양한 인코딩 표준을 사용할 수 있다.

특히 Apple의 장치는 HLS만을 허용하기 때문에 DASH가 국제 표준으로 자리 잡고 있다.

 

 

 

 

 

 

 

 

참조

https://blog.naver.com/n_cloudplatform/222493527661

 

[미디어 기술 이해] 6단계로 알아보는 라이브 생방송 송출 원리

최근 ‘라방’ 이라는 단어의 부상과 함께 네이버 쇼핑라이브에서 Live로 쇼핑도 하고, BTS 공연도 생...

blog.naver.com

 

https://ko.wikipedia.org/wiki/%EC%BD%94%EB%8D%B1

https://growthvalue.tistory.com/178

https://www.cloudflare.com/ko-kr/learning/video/what-is-live-streaming/

https://www.cloudflare.com/ko-kr/learning/video/what-is-http-live-streaming/

https://www.cloudflare.com/ko-kr/learning/video/what-is-mpeg-dash/

https://www.cdnetworks.com/ko/media-delivery-blog/what-is-rtmp-ingest/

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함