비디오 스트리밍

Stormi·2022년 7월 27일
0

네트워크

목록 보기
28/37

인터넷 비디오

  • 스트리밍 비디오 애플리케이션에서는 미리 녹화된 비디오를 서버에 저장되어 사용자가 비디오 시청을 서버에게 온-디맨드로 요청한다. 넷플릭스, 유튜브, 아마존, 유쿠 등 많은 인터넷회사가 비디오 스트리밍을 지원하고 있다.

비디오는 이미지의 연속으로서 일반적으로 초당 24개 또는 30개의 이미지로 일정한 속도로 표시된다. 압축되지 않은 디지털 인코딩된 이미지는 픽셀 단위로 구성되며, 각 픽셀은 휘도와 색상을 나타내는 여러 비트들로 인코딩된다.
" 비디오는 압축될 수 있다 " -> 비디오 품질과 비트 전송률은 같이 압축 가능하다, 비트 전송률이 높을수록 이미지 품질이 좋아지고 전반적인 사용자 시청 환경이 향상된다

  • 압축된 인터넷 비디오는 일반적으로 고화질 동영상을 스트리밍하기위해 100kbps에서 3Mbps이상으로 구성된다. 이는 하이엔드 동영상의 경우 트래픽및스토리지 용량이 엄청나게 필요함을 의미한다.
  • 스트리밍 비디오에서 가장 중요한 성능 척도는 평균 종단간 처리량이다. 네트워크는 압축된 비디오의 전송률 이상의 평균 처리량을 스트리밍 어플리케이션에게 제공해야한다.
    -압축을 사용하여 동일한 비디오를 여러 품질로 만들 수 있다. 예를들어, 300kbps, 1Mbps, 3Mbps의 비트 전송률로 동일한 비디오를 세가지 버전으로 만들때, 압축을 사용해서 사용자는 현재 사용가능한 대역폭을 선택하여 보고 싶은 버전을 결정할 수 있다.

HTTP 스트리밍 및 대쉬(DASH)

  • HTTP 스트리밍(비디오는 HTTP 서버에 path를 사용해서 URL로 저장)
  1. 사용자가 비디오 시청을 원해서 클라이언트는 서버에게 TCP 연결을 설립하고 해당 URL에 대한 HTTP GET요청을 발생시킨다.
  2. 서버가 기본 네트워크 프로토콜 및 트래픽 조건이 허용되는 대로 HTTP 응답 메시지 내에서 비디오 파일을 전송한다.
  3. 클라이언트 쪽에서는 애플리케이션 버퍼에 전송된 바이트가 저장된다. 이 버퍼의 바이트수가 미리 정해진 임계값을 초과하면 클라이언트 애플리케이션이 재생을 시작한다. 특히 스트리밍비디오 애플리케이션은 클라이언트 애플리케이션 버퍼에서 주기적으로 비디오 프레임을 가져와서 프레임을 압축해제 한 다음 사용자의 화면에 표시한다.

문제점

  • 모든 클라이언트들이 그들 사이의 가용 대역폭의 차이에도 불구하고 똑같이 인코딩된 비디오를 전송받는다
  • 가용 대욕폭의 차이는 서로 다른 클라이언트들간에 존재할 뿐만아니라 같은 클라이언트에서도 시간에 따른 차이가 발생

해결법

HTTP 기반 스트리밍은 대쉬의 등장!!

DASH

  • 비디오는 여러개의 서로다른 버전으로 인코딩되며, 각 버전은 서로다른 비트율과 품질 수준을 가지고 있다. 가용 대욕폭이 충분할 때는 높은 비트율의 비디오 버전을 요청하며, 가용 대욕폭이 적을 때는 낮은 비트율의 비디오 버전을 요청한다.

  • 클라이언트는 HTTP GET 요청을 이용해 다른 버전의 비디오조각(청크)을 매번 선택한다.

  • DASH는 클라이언트에게 세션 유지중에 시간에 따라 변화하는 종단간 가용 대역폭에 적응할 수 있도록 허용한다 -> 이동중에 접속하는 기지국의 상황에 따라 대역폭이 자주 변화하기 때문이다.

동작방식

  1. HTTP 서버는 비트율에 따를 각 버전의 URL을 제공하는 매니페스트 파일을 갖고 있다.
  2. 클라이언트는 먼저 매니패스트파일을 요청해서 서버에서 제공되는 다양한 버전을 알게된다. 이후 클라이언트는 매번 원하는 버전의 비디오 조각데이터를 선택하여 HTTP GET 요청메시지에 URL과 byte-range(chunk 단위)를 지정하여 요청한다.
  3. 청크 단위 데이터를 다운로드 하는 동안, 클라이언트는 측정된 수신 대역폭과 비트율 결정 알고리즘을 이용해 다음에 선택할 비디오 청크 단위 데이터의 버전을 결정한다.

-> 그러므로 대쉬는 보는 도중에 비디오버전이 달라질 수 있음을 의미한다.

0개의 댓글